web-dev-qa-db-ja.com

無視されているSSIS 2008パッケージ構成

コマンドラインで/ ConfigFile something.dtsConfigを指定すると、2005年と比較して2008年にパッケージ構成が変更されるため、パッケージで定義された変数は、構成ファイルの設定を使用するのではなく、設計時の値を保持します。

外部構成ファイルを使用する方法を完全に理解しているのか、私にはよくわかりません。設定されている設計時の構成のみが外部ファイルの負荷を上書きすることを述べている記事を読みました。これは、変数を空の文字列に変更すると、上書きされることを意味しますか?変数を完全に削除することはできません!整数はどうですか?

パッケージ内のパッケージ構成を使用してオフにすることについて言及している記事を見ました。

SSISパッケージエディターまたはXMLエディターを使用してパッケージ内の構成ファイルのパスを変更し、そのファイルの設定を "外部"(外部の/ ConfigFileオプションに関係なく)使用しますが、パッケージの変更。 Test.dtsConfigとProduction.dtsConfigを含む1つのパッケージが必要で、パッケージを変更せずに前後にスワップできるようにします。

これを行うための推奨される方法は何ですか?

10
Cade Roux

BIDSで実行する場合、パッケージは最初に構成ファイルから変数値を取得し、構成ファイルが存在しない場合にのみ警告がスローされ、値がパッケージから取得されることを考慮する必要があります。

さて、コマンドラインの状況は少し異なります。次のような状況が考えられます。

  1. 設定ファイルを選択せず​​に、cmd行でパッケージを実行します。

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    
    • 元の構成ファイル(Prodという名前を付けます)がパッケージのメタデータで定義された同じパスに存在しない場合、パッケージ内の値が使用され、構成ファイルが見つからないという警告が表示されます。
    • 元の構成ファイルが存在し、有効である場合、構成ファイルの値が使用されます(内部の値はバイパスされます)。
  2. 設定ファイルを選択せず​​にcmd行でパッケージを実行しますが、呼び出しで変数を設定します。

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    
    • 元の構成ファイルが存在しない場合、値は/ SETパッケージ呼び出しから取得されます。
    • 元の構成ファイルが存在する場合、値は構成ファイルから取得され、/ SETも無視されます(これは上記の場合にのみ使用されます)。
  3. 新しい構成ファイルを使用してcmd行でパッケージを実行します(Prodの代わりにDEVとしましょう):

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    
    • 新しい構成(Dev)ファイルが存在し、古い(Prod)ファイルが存在しない場合、そのファイルの値が使用されます。
    • devとProdの両方の構成ファイルが存在する場合は、Prodの値のみが使用されます(コマンドライン呼び出しで指定されている場合でも、DEVはバイパスされます)。
  4. 新しい構成ファイルと呼び出しのSETステートメントを使用して、コマンドラインでパッケージを実行します。

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig" /SET \Package.Variables[checkMe];"outside the package in cmd line - DEV config"
    
    • 両方の構成ファイルが存在する場合、Prodが使用され、他のすべては無視され、SETも含まれます。
    • 設定ファイルが存在しない場合は、SET値が使用されます。

つまり、簡単に言うと、新しい構成ファイルを使用する場合は、古い構成ファイルの名前を変更/移動し、/ configFileを使用してパッケージを呼び出す必要があります。それだけでは不十分で、新しい設定ファイルも上書きしたい場合は、/ SET変数を使用します。または、構成ファイルをバイパスして、バッチ呼び出しで/ SETステートメントを使用することもできます。

うまくいけば、あなたの可能性に光を当てることができます。

10
Marian