以下腳本示範如何在 SQL Server 預存程序中使用 OLE 自動化物件載入、設定屬性、執行並銷毀 DTS 套件:
DECLARE @hr INT, @object INT
EXEC @hr = sp_OACreate 'DTS.Package', @object OUTPUT
IF @hr <> 0 BEGIN
PRINT 'error create DTS.Package'
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=CONVERT(VARBINARY(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT 'create DTS.Package successful'
EXEC @hr = sp_OAMethod @object, 'LoadFromSQLServer', NULL,
@ServerName='localhost', @PackageName='testdts', @Flags=256
IF @hr <> 0 BEGIN
PRINT 'error LoadFromSQLServer'
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=CONVERT(VARBINARY(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT 'LoadFromSQLServer successful'
EXEC @hr = sp_OASetProperty @object, 'GlobalVariables("var_1").Value', 123
IF @hr <> 0 BEGIN
PRINT 'error set property'
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=CONVERT(VARBINARY(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT 'set property successful'
EXEC @hr = sp_OAMethod @object, 'Execute'
IF @hr <> 0 BEGIN
PRINT 'Execute Failed'
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=CONVERT(VARBINARY(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT 'Execute Successful'
EXEC @hr = sp_OADestroy @object
IF @hr <> 0 BEGIN
PRINT 'Destroy Package failed'
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=CONVERT(VARBINARY(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT 'destroy successful'
此模式可彈性應用於程式開發,實現資料庫層級的 ETL 自動化排程。