環境のために1つの環境を設定することはできません - 環境の考え方は、実行中にどちらを使用するかを選択することです。あなたが指摘したように、あなたは仕事でそれを行うことができます。それはエージェントの仕事が超自然的な力を持っていることを意味しますか?もしあなたがスクリプト環境を参照するパッケージを実行ステップでジョブをいいえ、あなたはおなじみのdtexecコマンドが表示されます、例えば:私はここで強調したいだろうか
/ISSERVER "\"\SSISDB\test\test1\Incremental.dtsx\"" /SERVER "\"DESKTOP-NT4K1HQ\""
/ENVREFERENCE 1 /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1
/Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E
は/ENVREFERENCE 1パラメータであり、 - エージェントのジョブがどの環境を選択するかを知る方法はここにあります。
あなたの質問に対する答えは、パッケージを実行している間は常に環境を選択する必要があるということです。
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Child1.dtsx', @[email protected]_id OUTPUT, @folder_name=N'TestDeply4', @project_name=N'Integration Services Project1',
@use32bitruntime=False,
@reference_id=1
@reference_id = 1
は、ご使用の環境の参照です:カタログ手続きの場合、あなたは(this articleあたり)のような何かをするだろう。環境IDを見つけるには、[SSISDB].[catalog].[environments]
ビューを照会する必要があります。
あなたの質問にお答えしましたか、あなたのパッケージを別の方法で実行しましたか?複数の環境を必要としないことが確かな場合は、環境変数がまったく必要ないという兆候です。
お返事ありがとうございます。私は1つ以上の環境(DEV、QA、PROD ..)を使用する必要があります。私の問題は、このようなパッケージを実行しているということです。>私は、DB内のSPにパラメータを送信するWebサービスを持っています。これは 'start_execution'でパッケージを実行します。このパラメータの値。私の意図は、接続文字列のための環境変数を使用することでしたので、簡単にハードコード化し、必要に応じて変更することができます。 DB内のテーブルに依存するように変更する必要がありますか? – sagi
環境変数は必要なものを実現するのに適していますが、実行を作成する際にはコンテキストを特定できる必要があります(start_executionを呼び出す前に実行する必要があります)。私はあなたのWebサービスからストアドプロシージャへのパラメータを介して環境IDを渡すことも、IDまたは環境名を格納するconfigテーブルを作成することもできます。 – PacoDePaco
もう一つのアイデア:必要な環境を、データベース/サーバー名と一致する名前(環境をどのように分離するかによって異なります)に設定します。次に、[SSISDB]。[カタログ]。[環境]ビューを照会することによって、db /サーバー名を使用して環境IDを抽出することができます。 – PacoDePaco