web-dev-qa-db-ja.com

SSIS 2008パッケージ構成ファイルのパスを上書きする方法は?

Configという名前の単一の構成を持つSSIS 2008パッケージがあります。 dtexec /SETスイッチを使用して、使用する構成ファイルのパスを変更したいので、パッケージをビルドする開発者は、ローカルパスを指すことができますが、運用サーバーに展開すると、 dtexecが設定をロードする新しいパスを指定して、prod設定を含めることができるようにします。

[〜#〜] msdn [〜#〜] によると、ここで言及しているように、/ SETコマンドを使用してこれを実行できるはずです。

/ Setオプションを使用して、ユーティリティがデザイン時の構成をロードする場所を変更するSQL Server Integration Services 2008の動作

成功する。

ユーティリティがランタイムオプションを適用した後、ユーティリティは新しい場所からデザイン時の構成を再読み込みします。

私はもう試した:

dtexec /FILE "PackagePath" /SET  "\Package.Configurations[Config].Properties[ConfigurationString]";"ConfigFilePath"

そしてそれは失敗します:

パッケージパスが、見つからないオブジェクトを参照しています: "\ Package.Configurations [Config] .Properties [ConfigurationString]"。これは、見つからないオブジェクトへのパッケージパスを解決しようとしたときに発生します。

私はまた、.dtsxファイルの編集されたバージョンを貼り付けました ここ 誰かが私が何かを間違って入力していると思われる場合に備えて。そして here は、私が変更しようとしているconfigの内容です。

環境変数などを使用して間接構成を行う方法は他にもあることに気づきましたが、それは私が興味を持っているものではないので、それらの提案を提供しないでください。 Microsoftはできるはずだと明確に述べているので、私は特に/ SETコマンドを使用しようとしています。環境のセットアップ方法により、この方法が最適です。

1
Levi W

SETを使用する必要はありません。代わりに、以下のようにDTExec.exe/ CONFIGパラメータを使用してそれを行うことができます。

SQLエージェントジョブ->ステップ->一般->タイプ(オペレーティングシステム(CmdExec))--->コマンド

"Drive\Microsoft SQL Server\110\DTS\Binn\DTExec.exe" /FILE "D:\SSIS\SSIS_PackageName.dtsx" /DECRYPT "STRONG_PASSWORD" /CONFIGFILE "D:\SSIS\CONFIG_FILE_PATH.dtsConfig" /CHECKPOINTING OFF /REPORTING E

編集:以下はmsdnからの抜粋です

/ Conf [igFile] filespec(オプション)。値を抽出する構成ファイルを指定します。 このオプションを使用すると、パッケージの設計時に指定された構成とは異なる実行時構成を設定できます。異なる構成を保存できます/ ConfigFileオプションを使用して、パッケージを実行する前に、XML構成ファイルの設定を読み込み、設定をロードします。/ConfigFileオプションを使用すると、設計時に指定しなかった追加の構成を実行時にロードできます。ただし、/ ConfigFileオプションを使用して、設計時に指定した構成済みの値を置き換えることはできません。パッケージ構成の適用方法を理解するには、SSISパッケージ構成とSQL Server 2008 R2のIntegration Services機能に対する動作の変更を参照してください。

SSIS 2008パッケージ構成ファイルのパスをオーバーライドする方法について質問しましたか?

あなたが話しているのはSETスイッチです-変数、プロパティ、コンテナー、ログプロバイダー、Foreach列挙子、またはパッケージ内の接続の構成を上書きします。

私はSSIS開発者を扱っており、PRODに展開するときに/ CONFIGを使用します。パスがパッケージ内で同じであることが条件です。

編集:2

動作が2008年以降に変更されたことをOPに同意します。

SQL Server 2008 Integration Servicesでは、イベントは次の順序で発生します。

  1. ユーティリティは、最初に設計時構成を適用します。
  2. 次に、ユーティリティは、ユーティリティの起動時にコマンドラインで指定したランタイムオプションを適用します。
  3. 最後に、ユーティリティが設計時設定を再ロードして再適用します

上記のシナリオでは、以下のように実行できます。

オプション1:

DECLARE @ssis_cmd VARCHAR(4000)
DECLARE  @Packagepath VARCHAR(50)
DECLARE  @FileName VARCHAR(50)
SET @Packagepath = 'D:\SSIS\SSIS_PackageName.dtsx' -- SSIS package location
SET @FileName = 'D:\SSIS\CONFIG_FILE_PATH.dtsConfig' --Passing dynamic variable i.e 'file location' into ssis package.
SELECT @ssis_cmd = 'dtexec /F "' + @Packagepath + '"'
SELECT @ssis_cmd =
@ssis_cmd + ' /SET \Package.Configurations[Config].Properties[ConfigurationString];"' + @FileName + '"'
EXEC master..xp_cmdshell @ssis_cmd

オプション2:

ここ で説明したように、テーブルSSIS_Configurationsを作成して、実行時にそれらをロードできます。良い例を示します ここ

接続アイテムが見つかりました ここ

HTH

2
Kin Shah