2017-09-24 17 views
0

実行時に接続文字列のパラメータを定義するために環境変数を使用しようとしています。SSISカタログ環境変数

私はsome guides onlineに従いました。問題に今

enter image description here

:だから私は、パッケージ内のパラメータを定義したガイドが働く
、唯一の問題は、パッケージが実行されるたびに、私は手動で私が欲しいの環境フォルダを選択する必要があるということです私はすでにパッケージでそれをやったが、使用する。

enter image description here

SSISは、どのように私はこれをオーバーライドします

(一つだけが存在していても)、使用する環境を知るために想定されていませんか?

スケジュールされたジョブを使用して、使用する環境を教えてもらえましたが、サービスとプロシージャを使用してパッケージを実行しているので、それは役に立ちません。どの環境を選ぶべきかを伝える方法が必要です。

答えて

1

環境のために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]ビューを照会する必要があります。

あなたの質問にお答えしましたか、あなたのパッケージを別の方法で実行しましたか?複数の環境を必要としないことが確かな場合は、環境変数がまったく必要ないという兆候です。

+0

お返事ありがとうございます。私は1つ以上の環境(DEV、QA、PROD ..)を使用する必要があります。私の問題は、このようなパッケージを実行しているということです。>私は、DB内のSPにパラメータを送信するWebサービスを持っています。これは 'start_execution'でパッケージを実行します。このパラメータの値。私の意図は、接続文字列のための環境変数を使用することでしたので、簡単にハードコード化し、必要に応じて変更することができます。 DB内のテーブルに依存するように変更する必要がありますか? – sagi

+0

環境変数は必要なものを実現するのに適していますが、実行を作成する際にはコンテキストを特定できる必要があります(start_executionを呼び出す前に実行する必要があります)。私はあなたのWebサービスからストアドプロシージャへのパラメータを介して環境IDを渡すことも、IDまたは環境名を格納するconfigテーブルを作成することもできます。 – PacoDePaco

+0

もう一つのアイデア:必要な環境を、データベース/サーバー名と一致する名前(環境をどのように分離するかによって異なります)に設定します。次に、[SSISDB]。[カタログ]。[環境]ビューを照会することによって、db /サーバー名を使用して環境IDを抽出することができます。 – PacoDePaco