我有關於ssis包的問題。我想在運行我的ssis包時動態地填充一個變量。該變量應該是正在執行的當前步驟/任務的連接字符串。例如,如果我有一個包含兩個步驟的ssis包,則第一步的連接是Server1DB1,第二步的連接是Server2DB2。當我在運行程序包時,第一步忙於執行變量應該是Server1DB1,一旦完成並且第二步正在執行,變量應該是Server2DB2。我試圖找到答案,但所有文章都講述瞭如何根據變量改變連接,而不是反之。任何幫助都感激不盡。提前感謝你。如何從connectionstring ssis設置變量
回答
在腳本任務中,從Dts.Connections
獲取ConnectionManager的適當連接,然後將其ConnectionString屬性分配給ReadWrite變量。
如果ConnectionString由表達式設置,則需要讓連接管理器獲取連接,以便使用表達式的當前值更新ConnectionString屬性。
例如:
public void Main()
{
// Where "MyOLEDBConn" is the connection's name
var connectionManager = Dts.Connections["MyOLEDBConn"];
// AcquireConnection/ReleaseConnection is unnecessary if ConnectionString isn't set by an expression
var rawConnection = connectionManager.AcquireConnection(Dts.Transaction);
// "User::ConnectionString" is configured as a ReadWrite variable for the Script Task
Dts.Variables["User::ConnectionString"].Value = connectionManager.ConnectionString;
connectionManager.ReleaseConnection(rawConnection);
Dts.TaskResult = (int)ScriptResults.Success;
}
任務獲取連接字符串的當前值的基礎上,其表達,因此它需要在表達式的值是相同的,因爲它要在一個點執行當被記錄的任務獲得了連接時。這個任務可能直接放在你想要記錄的每一步之前或之後,或者(更好的是)在事件處理程序之前或之後執行。
一種替代
另一種方法將是使用表達式任務配置連接字符串,並將其分配給一個變量。連接(通過表達式)和您的日誌記錄過程都可以使用此變量,從而無需從ConnectionManager中獲取連接字符串。這將消除對上述腳本任務的需要。
嗨,謝謝你的回答。只是一個問題什麼是MyOLEDBConn?我在那裏使用哪個連接名稱? – 2014-09-29 09:23:23
@LiamDomingo,將「MyOLEDBConn」替換爲您的連接名稱。您可以在創建連接時選擇該名稱。 – 2014-09-30 12:58:32
連接是一個普通的SSIS連接,就像創建任何其他SSIS連接一樣。 – 2014-09-30 14:03:42
- 1. 運行時SSIS設置變量
- 2. 在SSIS中設置字符串變量
- 3. 從變量設置變量?
- 4. SSIS:如何設置
- 5. 如何在SSIS中將數據庫名稱設置爲變量?
- 6. 如何將XML節點值設置爲SSIS中的變量
- 7. 如何在SQL中設置多個SSIS變量任務
- 8. 如何從os變量設置變量爲supervisor和gunicorn配置?
- 9. 如何設置的ConnectionString爲DbExtensions/SqlBuilder?
- 10. 從JAMS調度程序設置SSIS變量
- 11. SSIS從數據流設置結果集到變量
- 12. SSIS - 從查詢中設置多個包變量導致
- 13. SSIS - 從變量中設置數據流派生列的值
- 14. 如何從NSMutableArray設置實例變量?
- 15. 如何從主類設置Install4j變量?
- 16. 如何從Scala設置環境變量?
- 17. 如何從Java設置系統變量?
- 18. 如何從Perl設置Windows PATH變量?
- 19. 如何從gtk_entry設置變量值?
- 20. 如何從SSIS中的腳本任務重置對象變量?
- 21. 如何設置$ _GET變量
- 22. 如何設置NSManaged變量?
- 23. 如何設置defcustom變量
- 24. 如何設置變量SQLCMD
- 25. 如何設置變量PHANTOMJS_BIN
- 26. 如何從asp.net中的C#變量設置javascript變量?
- 27. 從變量設置類(自)變量?
- 28. 在運行時設置ConnectionString
- 29. 從變量設置* args?
- 30. 設置在從變量
動態部分在哪裏起作用?任務A在Server1DB1上執行某些操作,任務B在Server2DB2上執行某些操作 – billinkc 2014-09-25 13:41:38
嗯,也許我使用了錯誤的單詞......但是在運行時,當每個步驟都在執行時,變量會被更新/更改爲正在執行的當前步驟/任務的連接。 – 2014-09-25 13:44:29
我還沒有「明白」。任務A在Server1B1上執行X.該執行的結果是否以任何方式確定執行任務B的位置? – billinkc 2014-09-25 13:46:18