本当に DTS (SQL2000) なのか、それとも新しい兄弟 SSIS なのか? いずれにせよ、パッケージへの複数の動的接続を指定しなければならないという同様の問題がありました。私がそれを解決した方法はこれでした:
呼び出し元から: - SQL テーブルに 2 つの列を書き込みます: - 「キー」列はターゲットへの特定の接続でした - 「値」列は新しい接続値でした
パッケージ内: - SQL タスクを使用して、キーと値のペアを @User:: 変数に読み込みます - スクリプト タスクを使用して、それ自体の実行中のインスタンスへのハンドルを取得します --> このハンドルを介して接続文字列を割り当てます
DTS の例:
' Get a reference to self (the DTS package currently running)
Set oPkg = DTSGlobalVariables.Parent
' Get connection to Input File - Set Path
Set oCn = oPkg.Connections.Item ( "MasterFileIn" )
oCn.DataSource = workAreaPath & "MasterFile.txt"
SSIS は、アクティブなパッケージ オブジェクトへのアクセスを許可しませんが、接続を直接設定できる場合があります。ScriptMain.csファイルで:
ConnectionManager cm = Dts.Connections["MasterFileIn"];
cm.ConnectionString = Dts.Variables["DataSource"].Value;