INF: Examples of Sp_OA Procedure Use and SQLOLE.Transfer ObjectLast reviewed: April 10, 1997Article ID: Q152801 |
The information in this article applies to:
SUMMARYThe following Transact-SQL sample code transfers an entire database. It is a simplified example of how to use the Sp_OA procedures and the SQLOLE.Transfer object. For detailed documentation of the procedures and objects, query in SQL Server 6.50 Books Online.
use pubs go -- Disconnect the server object drop procedure sp_OA_ServerDisconnect go create procedure sp_OA_ServerDisconnect @bDebug bit, @oServer int as if @bDebug = 1 print 'sp_OA_ServerDisconnect starting...' DECLARE @hr int exec @hr = sp_OAMethod @oServer, 'Disconnect' if @hr <> 0 EXEC sp_OAGetErrorInfo @oServer return @hrgo -- Create a stored procedure to handle the server object and make a login drop procedure sp_OA_ServerObject go create procedure sp_OA_ServerObject @bDebug bit, @oServer int output, @strServer varchar(30), @strUser varchar(30) as
if @bDebug = 1 print 'sp_OA_ServerObject starting...' DECLARE @hr int exec @hr = sp_OACreate 'SQLOLE.SQLServer', @oServer OUT if @hr = 0 begin Select 'Attempting to connect to ' + @strServer + ' as ' + @strUser exec @hr = sp_OAMethod @oServer, 'Connect', NULL, @strServer,@strUser if @hr <> 0 begin exec sp_OAGetErrorInfo @oServer exec sp_OADestroy @oServer end end else EXEC sp_OAGetErrorInfo @oServer return @hrgo -- Create a stored procedure to create transfer object and fill in properties drop procedure sp_OA_TransferObject go create procedure sp_OA_TransferObject @bDebug bit, @oTransfer int OUT, @strDestDB varchar(30), @strToServer varchar(30), @strToUser varchar(30) as
if @bDebug = 1 print 'sp_OA_TransferObject starting...' DECLARE @hr int DECLARE @oLogin int exec @hr = sp_OACreate 'SQLOLE.Transfer', @oTransfer OUT if @hr = 0 begin print 'Setting transfer properties...' exec @hr = sp_OASetProperty @oTransfer, 'CopyAllObjects', 1 if @hr = 0 begin exec @hr = sp_OASetProperty @oTransfer, 'CopyData', 1 if @hr = 0 begin exec @hr = sp_OASetProperty @oTransfer, 'CopySchema', 1 if @hr = 0 begin exec @hr = sp_OASetProperty @oTransfer, 'DestDatabase',@strDestDB if @hr = 0 begin if @bDebug = 1 print 'Setting DestServer' exec @hr = sp_OASetProperty @oTransfer, 'DestServer',@strToServer if @hr = 0 begin exec @hr = sp_OASetProperty @oTransfer, 'DropDestObjectsFirst', 1 if @hr = 0 begin exec @hr = sp_OASetProperty @oTransfer, 'DestLogin', @strToUser if @hr <> 0 begin exec sp_OAGetErrorInfo @oTransfer exec sp_OADestroy @oTransfer end end else begin exec sp_OAGetErrorInfo @oTransfer exec sp_OADestroy @oTransfer end end else begin exec sp_OAGetErrorInfo @oTransfer exec sp_OADestroy @oTransfer end end else begin exec sp_OAGetErrorInfo @oTransfer exec sp_OADestroy @oTransfer end end else begin exec sp_OAGetErrorInfo @oTransfer exec sp_OADestroy @oTransfer end end else begin exec sp_OAGetErrorInfo @oTransfer exec sp_OADestroy @oTransfer end end else begin exec sp_OAGetErrorInfo @oTransfer exec sp_OADestroy @oTransfer end end else exec sp_OAGetErrorInfo @oTransfer return @hrgo
-- Create a stored procedure to drive the transfer of the pubs database drop procedure sp_OA_TransferDB go create procedure sp_OA_TransferDB @bDebug bit, @strFromDB varchar(30), @strFromServer varchar(30), @strFromUser varchar(30), @strDestDB varchar(30), @strToServer varchar(30), @strToUser varchar(30), @strScriptsDir varchar(255) as
if @bDebug = 1 print 'sp_OA_TransferDB starting...' select 'Preparing to transfer from ' + @strFromServer + '.' + @strFromDB+ ' to ' + @strToServer + '.' + @strDestDB
-- -- Variable declarations -- DECLARE @oServer int DECLARE @oTransfer int DECLARE @hr int DECLARE @strResult varchar(255) DECLARE @strCommand varchar(255) -- -- Create the server object and get logged on -- exec @hr = sp_OA_ServerObject @bDebug, @oServer OUT, @strFromServer,@strFromUser if @hr = 0 begin -- -- Create a transfer object and fill in the details -- exec @hr = sp_OA_TransferObject @bDebug, @oTransfer OUT, @strDestDB,@strToServer, @strToUser if @hr = 0 begin print "Scripting the transfer..." -- -- Script the transfer -- -- SQLOLEXfrFile_SummaryFiles = 0x0001 -- select @strCommand = 'Databases("' + @strFromDB + '").ScriptTransfer' if @bDebug = 1 select @strCommand exec @hr = sp_OAMethod @oServer, @strCommand, @strResult OUT,@oTransfer, 1, @strScriptsDir if @hr = 0 begin if @bDebug = 1 select 'Result' = @strResult print "Performing the transfer..." select @strCommand = 'Databases("' + @strFromDB + '").Transfer' if @bDebug = 1 select @strCommand exec @hr = sp_OAMethod @oServer, @strCommand, NULL, @oTransfer if @hr <> 0 begin exec sp_OAGetErrorInfo @oServer print '***The ::Transfer method failed. Check your scriptdirectory (.log) files for more details.' end begin print 'Transfer complete successfully!!!' end end else begin exec sp_OAGetErrorInfo @oServer end -- -- Clean up the transfer object -- exec sp_OADestroy @oTransfer end -- -- Clean up the server object -- exec sp_OA_ServerDisconnect @bDebug, @oServer exec sp_OADestroy @oServer endgo -- Execute a transfer set nocount on go exec sp_OA_TransferDB 0, "pubs", "MyServer", "sa", "pubs2", "MyServer", "sa", "c:\temp\scripts" go
Transfer a Single Table Structure and Data
Dim oServer As Object Dim oTransfer As Object ' ' Create the Server object and connect ' ' To obtain the correct defs for constants you need to ' include the SQLOLE65.TLB. Same is true if you want to ' DIM things as SQLOLE.SQLServer and not as Object 'Set oServer = CreateObject("SQLOLE.SQLServer") oServer.Connect "MyServer", "sa" If oServer.VerifyConnection = True Then
Set oTransfer = CreateObject("SQLOLE.Transfer") oTransfer.CopyAllDefaults = False oTransfer.CopyAllObjects = False oTransfer.CopyAllRules = False oTransfer.CopyAllStoredProcedures = False oTransfer.CopyAllTables = False oTransfer.CopyAllTriggers = False oTransfer.CopyAllUserDefinedDatatypes = False oTransfer.CopyAllViews = False oTransfer.CopyData = SQLOLECopyData_Replace oTransfer.CopySchema = True oTransfer.IncludeDependencies = False oTransfer.IncludeGroups = False oTransfer.IncludeLogins = False oTransfer.IncludeUsers = False oTransfer.DropDestObjectsFirst = True oTransfer.DestDatabase = "pubs2" oTransfer.DestServer = "MyServer" oTransfer.DestLogin = "sa" ' ' Note: That when used AddObjectByName you must qualify the object ' "Owner.Object". If this is not done you the schema (.TAB) file will ' remain empty and the drop file (.DP1, .DP2) will contain a".Object". ' oTransfer.AddObjectByName "dbo.tblTrans", SQLOLEObj_UserTable oServer.Databases("pubs").ScriptTransfer oTransfer, 1,"c:\temp\scripts"
oServer.Databases("pubs").Transfer oTransferElse MsgBox "VerifyConnection failed"End If
MsgBox "Done" BCP Operation Dim oServer As Object Dim oBCP As Object Set oServer = CreateObject("SQLOLE.SQLServer") Set oBCP = CreateObject("SQLOLE.BulkCopy") oServer.Connect "MyServer", "sa" oBCP.DataFileType = SQLOLEDataFile_SpecialDelimitedChar oBCP.ColumnDelimiter = "~~~" oBCP.RowDelimiter = Chr(10) + Chr(13) oBCP.DataFilePath = "c:\temp\scripts\authors.bcp" oServer.Databases("Pubs").Tables("authors").ExportData oBCP MsgBox "Done"
|
Additional query words: SQL-DMO SQL Database Management Objects
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |