2011年の夕方に8 PM)で実行されているSSISパッケージがあります。
2010年の8:30 PM)に同じパッケージを実行したいと思います。
SSISパッケージ構成ファイルを作成し、パラメーターとして「Year」を受け入れます。実行するたびに、ファイルを開き、値を変更して実行する必要があります。
スケジュールを設定し、年の値を動的に設定することは可能ですか?
または、2つの異なる構成ファイルを使用することがそれを解決する唯一の方法ですか?
皆さんありがとう。
構成ファイルアプローチを使用する際の課題は、ファイルを絶えず変更する必要があることです。 SSISは起動後に構成ファイルをリロードしないため、8:05と8:35 PM構成ファイルを交換するジョブが発生する可能性がありますが、それは面倒になり、ある時点で中断します。
この状況は、コマンドライン変数( / dtexecのオプションを設定 )で処理します。コマンドラインからパッケージを実行している場合は、dtexec.exe /file MyPackage.dtsx
のようになります。SQLエージェントを使用している場合でも、バックグラウンドでそれらのコマンドライン引数を作成しています。
このアプローチでは、2つの異なるジョブを作成することを前提としています(1日2回スケジュールされた1つのジョブに対して)。 AgentMyPackage2011には、SSISのジョブステップがあり、その結果、
dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2011\"
agentMyPackage2012にはSSISのジョブステップがあり、その結果、
dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2012\"
GUIを使用すると、次のようになります。
構成するプロパティのGUIまたはセレクターはありません。ただし、パッケージの.dtsConfigファイルは既に作成されているため、そのファイルを開いて、次のようなセクションを探します。
<Configuration ConfiguredType="Property" Path="\Package.Variables[User::Year].Properties[Value]" ValueType="Int32">
<ConfiguredValue>2009</ConfiguredValue>
ファイルには、構成しようとしている「もの」へのパスが既に含まれているので、それを呼び出し側プログラムにパンチしてから、パッケージ構成の年の部分をオフにします。
最後に、2005年モデルと2008年モデルには違いがあるため、 SSIS構成の優先順位 へのリンク。チケットに2008と記載されているようですが、将来の読者のために、/ SETと構成ソース(xml、SQLサーバー、レジストリ、環境変数)の両方を使用している場合、操作の順序はバージョンによって異なります。