2011-06-28 14 views
0

指定されたルート "Data"フォルダの場所にあるファイルを処理し、指定されたデスティネーションデータベースにロードするSSISパッケージがあります。SSIS構成ファイルはDRY(自分自身を繰り返さない)プリンシパルをサポートしていますか?

もちろん、ルート入力フォルダーは、開発および実稼働環境全体で、宛先データベースと同様に変更されます。

特定の入力ファイルについては、ルートDataフォルダのサブフォルダがありますが、開発のファイルディレクトリ構造は本番と一致しています。ルートフォルダの場所のみが異なります。

私は、開発環境のファイルと実稼働環境のどちらのファイルに応じてこのファイルの内容を変更するかによって、データベース接続を制御する単一のDtsConfigファイルを簡単に作成できます。

キー部分: ただし、ファイルのConnectionStringsはまっすぐではありません。理想的には、%RootFolder%\ SourceSystemA \ HardCodeFileName.txtの形式でファイルConnectionstringパスを指定できるようにしたいと考えています。%Rootfolder%は環境によって異なります。

しかし、実行時にパッケージを変更するスクリプトを書いていない(例は見当たりません)、またはプログラム全体でパッケージを作成するのでは、これができないと思います。このように環境変数をパッケージプロパティの一部だけに適用すると、サポートされていないように見えます。 (試してみてください)相対パスもサポートされていないようです(私たちのファイルは別のドライブにあるので、これは役に立たないかもしれません)。

私が理解しているように "DRY"ここでは関連していますが、基本的には、静的なものと変更するものを分けて、1つの場所で簡単に更新できるようにし、どこにでも適用したいと思います。

これはどのように達成できますか?

答えて

1

これは完璧ではありませんが、私はこれを行う方法があります。まず、ルートフォルダ名を保持する変数をパッケージに追加します。次に、接続をクリックしてプロパティ(F4)に移動します。 "..."ボタンをクリックして "式"を修正してください。接続文字列の式を作成します。式のために、ルートフォルダと特定のファイル名(例えば、@[User::RootFolder] + "\SpecificPath\Filename.csv")を組み合わせることができます。

この設定が完了したら、設定ファイルを使用してRootFolderパッケージ変数を変更すると、すべてのファイルが正しく読み書きされます。

タイトル質問に答えて - SSISはDRYをサポートしていますが、他の場所ではDRYをサポートしていません。あなたがしようとしていることについては、答えは「はい」です(上で概説したような表現で)。

+0

非常に良いスタート!しかし、ルートフォルダの値を100個のパッケージに100回保存する必要を避けるため、中央の場所、好ましくはフラットファイルまたはデータベーステーブルの値から読み取り、維持することができます。あなたはルーキーが絵を完成させるのを助けることができますか? – ChadD

+0

各SSISパッケージ内に複数の設定ファイルを置くことができます。ルートフォルダのみを持つ1つの構成ファイルを作成でき、すべてのSSISパッケージが同じ構成ファイルを参照します。 –

+0

これは、すべてのSSISパッケージに同じパッケージ変数を定義する必要があることを意味しますが、それは問題ではありません。 –

関連する問題