2016-07-13 6 views
0

SSISパッケージには、値を(パッケージパラメータを使用して)取り込み、スクリプト変数(読み取り専用変数)を介してスクリプトタスクに渡し、別のものスクリプトタスク内の値を読み込み、最後にその値を別のスクリプト変数(readwrite変数)に書き込みます。パッケージには、スクリプトタスク以外の他のSSISモジュールはありません。私は(SQL経由)パッケージの外側から、やりたい何SSISパッケージスクリプトタスクを実行するストアドプロシージャから変数値を取得する

は次のとおりです。

  1. 読み取りの値を取得します
  2. 私のパラメータの値を渡し、SSISパッケージを呼び出し、変数
  3. /スクリプトタスクの実行の終わり

で決定された変数を書き、私はちょうど#2を把握することはできません、ステップ#1作業を持っています。

SSISパッケージが実行された後、package変数の値を取得するにはどうすればよいですか?それはアクセス可能ですか?それはどこに保存されていますか、SSISカタログのどこかに保存できますか? SSISDBに格納されているかどうか確認しようとしました。[カタログ] .executionsテーブルのどこかにありますが、そうではありません。

スクリプト変数を実行後にSQLから確認するには、そのスクリプト変数をパッケージパラメータに書き込む必要がありますか? EXEC [SSISDB]。[catalog] .get_parameter_valuesを使用して表示することもできますか、それともパッケージ実行前にパラメータ値を表示するだけですか?私はこれについて完全に間違った方法をしていますか?

ありがとうございます!

+1

SSISはログを出力しません。これがSSIS 2012の場合は、SSISカタログの管理ビューを使用して変数値を取得することはおそらく可能ですが、お勧めしません。あなたがしていることは、まったく畳み込まれていません。実際に何をしようとしているのかを説明したい場合は、より簡単な方法があるかもしれません。だから、SSISとSQLのバージョン(2008年、2012年、2104年)を投稿してください。実際に何をしようとしていますか?スクリプトタスクが何をして、あなたはSQLからパッケージを呼び出して、SQLで結果を得ようとしていますか? –

+0

確かです。それはSQL Sever 2012です。 私は基本的に誰かがVBで数年前に書いた小さなコードを持っています。ほとんどが非常にシンプルで、1つの入力と1つの出力がメインフレームのデータを準備しています。真ん中の「仕事」はかなり複雑です。私が働いている組織は、このVBコードをいくつかのSQLストアドプロシージャに統合しようとしていますが、SQLでロジックを書き直す時間を費やされたくありません。だから私のアプローチは、SQLからのスクリプトタスクでVBコードでパッケージを呼び出し、パッケージ実行からの出力変数を取得し、ストアドプロシージャでローリングを続けることです。 –

+0

実際に私がCLR機能という別の名前で人生をしようとしているような音がします。 –

答えて

0

私は、テーブルに変数の値を書き込むために最後のステップをパッケージに追加します。

次に、SQLを使用してテーブルから値を取得できます。

いつでもテーブルを切り捨てることも、パッケージが実行されるたびに永続的な履歴を保存することもできます。

+0

の推奨バージョンを指定してください。私は先に進んでこれを実装しました - 私は今どのように行うのか分からないのは、特定の実行をテーブルの値に結びつけることです。この変数を使って私のテーブルに投げることができるシステム変数があります。それは、パッケージの特定のインスタンス/実行に結びつけることができますか? –

+0

私は気づいていません。すべての実行で一意のカスタム変数を作成する必要があります。私はおそらく日時計のようなものを使っています。 –

+0

SSIS 2008とssis 2012の両方に実行IDが組み込まれていますが、その特定の呼び出しをどのように結びつけますか? SSIS 2012では、呼び出し時に(カタログストアドプロシージャを使用して)実行IDを取得できますが、代わりにxp_cmdshellまたはCLRルートを調べることをお勧めします。 –

関連する問題