none
請問SSIS 如何利用 預存程序 執行 RRS feed

  • 問題

  • 我原本在 SQL2000 有DTS

    另外利用 ASP.NET 網頁執行  預存程序

    透過 預存程序 帶入參數 去執行 DTS

    現在 打算將 DTS 直接封裝成 SSIS 的PACKAGE

    仍然透過 ASP.NET 網頁執行 預存程序 再由 預存程序 執行封裝

    可是用原本的 預存程序 都無法執行

    不知是否有人寫過類似的語法?

    我原本的 預存程序 如下

    CREATE PROCEDURE SP_ExecDTS_UPD_Asset
    (
     @User_ID varchar(6)
    )
     AS
    -- 呼叫封裝
    DECLARE @hRes INT, @pkg INT, @var INT
    -- 建立 封裝物件
    EXEC @hRes=sp_OACreate 'DTS.Package',@pkg OUTPUT
    -- 載入封裝
    EXEC @hRes=sp_OAMethod @pkg, 'LoadFromSqlServer',null,@ServerName = 'TRUSTDBFA'
    --, @ServerUserName = 'xadmin'
    --, @ServerPassword = 'xxx'
    , @Flags=256
    , @PackageName='UPD_Asset'
    -- 取得變數屬性
    EXEC @hRes=sp_OAGetProperty @pkg, 'GlobalVariables("UserID")', @var OUTPUT
    -- 設定變數
    EXEC @hRes=sp_OASetProperty @var, 'Value', @User_ID
    -- 執行封裝
    EXEC @hRes=sp_OAMethod @pkg, 'Execute'
    EXEC @hRes=sp_OAMethod @pkg, 'UnInitialize'
    GO

     

     

    2007年2月27日 上午 01:57

解答

  • Hi: 您好,

    在此要說明的是:
    1. DTS 與 SSIS 是不同的軟體產品,所以基本上,將無法以 DTS 技術來使用 SSIS。
    2. SP_OA 一類的程式,不建議在 SQL Server 2005 上使用,且依其預設值,也是停用的。必須額外自行啟用。

    3. 若是您需要利用 Stored Procedure 來執行,可能的作法是:
     --撰寫 CLR stored procedure ,利用 SSIS 的 Microsoft.SqlServer.Dts.Tasks.ExecutePackageTask Namespace。
     --呼叫 dtexec.exe 執行 SSIS Package。 


    希望對您有幫助 ...

    Best Regards
    Derrick Chen 德瑞克

    2007年3月13日 上午 03:53