>>******************************************************************** >>* 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