2017-02-03 59 views
1

我似乎無法找到任何有用的文檔,我需要的具體情況。我正在嘗試啓動並將變量傳遞到部署在SQL Server上的SSIS包中。C# - 從wpf應用程序在SQL Server上運行SSIS

在管理工作室的包裝可以在Integration Services Catalog\SSISDB\IhsDataSync\Projects\LoadHeader\Packages\Package.dtsx下找到。從我看來,我需要使用Microsoft.SqlServer.Dts.Runtime;組件。當我去寫代碼的其餘部分是我有成千上萬的問題。

到目前爲止,我有:

  try 
     { 
      Application app = new Application(); 
      Package package = null; 

      package = app.LoadFromSqlServer("SSISDB\IhsDataSync\Projects\LoadHeader\Packages\Package.dtsx","servername","username","password",IDTSEvents); 
     } 
     catch 
     { 

     } 

大多數例子只是說明如何加載本地包在這種情況下,第一種方法的參數是相當明顯的。在sql server上使用包的路徑是什麼?

什麼是LoadFromSqlServer()的最後一個參數 - > IDTSEvents ??? 如何注入變量?

回答

0

你可以從shell調用dtexec嗎? 如果使用這種方法,您將失去使用純編程方法獲得的異常掛鉤,但將值傳遞到ssis變量與/ SET 一樣容易您仍然可以詢問返回代碼是否成功。 這可能是一個解決方法。

0

我收集你要問的主要問題是如何在執行前將值分配給變量?如果是這樣,您可以使用相應的DtsContainer(或其子對象)來訪問變量,然後將該值分配給特定的變量。

讓我們假設在包本身的名稱空間「User」中有名稱爲「ABC」的變量。你可以這樣做:

package = app.LoadFromSqlServer("SSISDB\IhsDataSync\Projects\LoadHeader\Packages\Package.dtsx","servername","username","password", idtsEvents); 
package.Variables["User::ABC"].Value = <value of approproate type> 

如果變量是關聯到子容器或任務,那麼你就可以獲取到sepcific容器/任務的引用,然後訪問變量屬性,如上面的例子。

LoadFromSqlServer的最後一個參數用於訪問可能作爲Load調用的一部分發生的事件。

相關問題