3

C# アプリケーションから dts パッケージを実行しようとしています。ただし、接続文字列を動的に変更する必要があります。Web を調べたところ、Package オブジェクトの Variables プロパティを使用する必要があることがわかりました。問題は、私の Visual Studio 2010 がパッケージのこの Variables 属性を表示しないことです。私が使用している名前空間は

using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;

私はどうしたらいいですか?

4

1 に答える 1

2

本当に 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;
于 2012-05-12T02:57:01.017 に答える