簡體   English   中英

如何將變量傳遞給腳本任務SSIS,Visual Studio 2010,C#

[英]How to pass Variable to script task SSIS, Visual Studio 2010, c#

我試圖找到一種方法,可以將服務器名稱作為變量傳遞給SSIS解決方案中的腳本任務。 我正在使用VS 2010和c#。

在我的SSIS中,我定義了Name(字符串)變量,並在腳本任務中將此變量添加為ReadOnlyVariable。

C#代碼如下所示:

在此處輸入圖片說明

當我嘗試將本地ServerName傳遞給OleDbDataAdapter時,問題就開始了(我猜想),該OleDbDataAdapter與strConn完美配合,但是與我的ServerName變量不兼容。

我試圖以“ User :: Name”的形式傳遞它,但是沒有用。

任何建議,將不勝感激:)

最好

您是否嘗試完全編寫此代碼? (我假設您已將變量Name定義為string) 您也可以參數化數據庫名稱。

string strConn = Dts.Connections[Dts.Variables["Name"].Value + "\\MY_DB_NAME"].ConnectionString;

更新:如果您想通過腳本任務連接到數據庫,則最佳實踐是配置新的連接管理器(參見圖片) 在此處輸入圖片說明 最重要的是您的連接名稱(在我的情況下為“ MY_NEW_CM”)

如果您將服務器名稱或數據庫名稱保存在變量中,則可以在連接管理器屬性中使用表達式編輯器(參見圖片) 在此處輸入圖片說明

稍后,您可以在腳本任務中的代碼中使用此配置的連接,如下所示:

ConnectionManager cm = Dts.Connections["MY_NEW_CM"];

我假設您想使用此連接管理器來運行一些SQL命令。

您可以這樣:

System.Data.SqlClient.SqlConnection sqlConn;
System.Data.SqlClient.SqlCommand sqlComm;
ConnectionManager cm = Dts.Connections["MY_NEW_CM"];

// Request an open connection
sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction);

// Do your work
sqlComm = new System.Data.SqlClient.SqlCommand("UPDATE YourTable SET YourColumn = 'SomeValue'", sqlConn);
int rowsAffected = sqlComm.ExecuteNonQuery();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM