>>>>>******************************************************************** >>>>>* We've primarily used SQLDMO to do things that were easier to do >>>>>* with it, then with VFP. Executing scripts in particular is much >>>>>* easier with SQLDMO. Things like creating a Database we continued >>>>>* to do with VFP. At some point, our utility needs to be transported >>>>>* to .NET, and I expect that I'll be having to figure out how to do >>>>>* more with SQLDMO, but for now, here's the few things I've learned >>>>>* to do. >>>>>* >>>>>*-- The easiest thing that you can do to explore the object model >>>>>* is of course, just create an instance and play with it with >>>>>* Intellisense: >>>>>******************************************************************** >>>>> >>>>>oSqlDMO AS SQLDMO.SqlServer >>>>>oSqlDMO = CREATEOBJECT("SQLDMO.SQLServer") >>>>> >>>>>******************************************************************** >>>>>*-- First, this is how you connect: >>>>>******************************************************************** >>>>> >>>>>oSqlDMO.Connect("MyServer", "MyUserName", "MyPassword") >>>>> >>>>>*-- I haven't figured out how to verify this connection. I think it >>>>>* throws an exception if it doesn't get a good connection, but I >>>>>* haven't tested that. If so, you can trap for errors. >>>>>* >>>>>* I've just used the old method of connecting with VFP's >>>>>* SqlStringConnect() at least let's you know if your connection >>>>>* was successful, so until I get around to figuring it out >>>>>* I've been connecting with SqlStringConnect first, then using >>>>>* SqlDMO. >>>>>* >>>>>* Also, haven't figure out how to suppress messages, as the >>>>>* SqlSetProp() does. Need to figure this stuff out eventually. >>>>> >>>>>******************************************************************** >>>>>*-- And of course, don't forget disconnecting: >>>>>******************************************************************** >>>>> >>>>>oSqlDMO.Disconnect() >>>>> >>>>> >>>>>******************************************************************** >>>>>*-- Run a script against an existing Database. In our case, we >>>>>* have a VFP table containing all the scripts we need to run against >>>>>* our SQL database in order to update it to our current version: >>>>>******************************************************************** >>>>> >>>>>oDatabase AS SQLDMO.Databases >>>>> >>>>>oDatabase = oSqlDMO.Databases("MyDataBase") >>>>>oSqlDMO.BeginTransaction() >>>>> >>>>>*-- need to catch errors gracefully, so that we can rollback transaction >>>>>oops = .F. >>>>>ON ERROR oops = .T. >>>>> >>>>>SELECT sqlscript >>>>>SCAN >>>>> WAIT WINDOW 'Running script ' + scriptkey NOWAIT >>>>> oDatabase.ExecuteImmediate(sqlscript.scripttext) >>>>> IF oops >>>>> AERROR(aa) >>>>> EXIT >>>>> ENDIF >>>>>ENDSCAN >>>>> >>>>>ON ERROR >>>>>WAIT CLEAR >>>>> >>>>>IF oops >>>>> oSqlDMO.RollbackTransaction() >>>>> lcMsg = "Script " + sqlscript.scriptkey + " had the following problems: " + ; >>>>> CHR(13) + CHR(13) + aa[2] + CHR(13) + CHR(13) + ; >>>>> "The database has been rolled back to it's previous condition, " >>>>> MESSAGEBOX(lcMsg, MB_OK + MB_ICONSTOP) >>>>>ELSE >>>>> oSqlDMO.CommitTransaction() >>>>>ENDIF >>>>> >>>>> >>>>>******************************************************************** >>>>>* Removing a database from SqlServer is a permanent and irreversible >>>>>* action, so be sure you really mean it!! >>>>>******************************************************************** >>>>>oDatabase = oSqlDMO.Databases("MyDataBase") >>>>>oDatabase.Remove() >>>>> >>>>> >>>>>******************************************************************** >>>>>* Good enough for now to get you started. Have fun playing!! >>>>>******************************************************************** >>>>>>>>>>~~Bonnie