6

SQL Server Business Intelligence Development Studio で SSIS パッケージを作成しました。そこで実行するとパッケージは正常に動作するので、パッケージをデプロイしました。

次に、パッケージ インストール ウィザードを使用して、ローカルの SQL Server 2005 にインストールしました。

今、私は自分のトリガーでそれを使用したいと考えています。

ファイルからパッケージを実行する方法は知っていますが、SQL Server にインストールされているときに実行するにはどうすればよいですか?

ありがとうございました。

4

4 に答える 4

8

前に述べたように、私はそのようなタスクをトリガーに入れません。トリガーが起動されるタイミングと回数を制御できないため、トリガー内のすべての実行時間は非常に短くする必要があります。長時間実行される処理をトリガーに入れないでください。

私のアプローチは次のとおりです。

  1. トリガーは、エントリをテーブル (「ジョブ」テーブルまたは任意の名前) に書き込みます。

  2. 5 分ごとなどに実行されるタスク (SQL エージェント ジョブなど)。またはそのテーブルを読み取り、必要に応じてファイルを書き込みます。

これにより、実際にファイルを書き込む長いプロセスからトリガー コードが切り離されます。

そうしないと、この非常に長時間実行される可能性のあるトリガーによって、システムのパフォーマンスが深刻な影響を受けます....

于 2012-05-31T06:54:39.427 に答える
1

T-SQL から SSIS パッケージを実行する方法はありますが、あまり保存されていないと思います。「xp_cmdshell」オプションを有効にして、dtexec を使用する必要があります。しかし、それはトリガーで使用するためのものではありません! とにかく、marc_s がコメントで指摘したように、トリガーは非常に無駄のないものにする必要があります。これはトリガー コマンドのトランザクションの一部であるため、長時間実行される操作、特に SSIS パッケージでは、データベースの速度が大幅に低下します。

于 2012-05-31T06:34:40.203 に答える
1

これを個別のステップに分割します。ファイル要件があるかもしれませんが、これを考慮してください。すべての行がファイルを生成する限り、ファイルの作成におそらく 5 分または 10 分かかるとしたら、それは本当に契約を破るものでしょうか? これは、トリガー内から SSIS パッケージを実行した場合に見られる連鎖反応よりも悪いのでしょうか?

そう:

ステップ 1 : トリガーは、ファイルの作成に必要な情報を含む行を別のテーブルに挿入するだけです。
ステップ 2 : SSIS パッケージを変更して、そのテーブルをポーリングして新しいエントリを探し、必要に応じてファイルを作成し、エントリを完了としてマークします (または完全に削除しますが、個人的には監査証跡が好きです)。
ステップ 3 : その SSIS パッケージを 5 分ごとに実行するスケジュールされたジョブをサーバーに追加します。

SSIS パッケージを変更したくない場合は、代わりに、テーブルをポーリングしてパッケージを実行するストアド プロシージャを作成し、それをジョブでスケジュールすることができます。主なことは、トリガーから直接パッケージを発射するという考えから離れることです。

上記の方法により、何らかの理由でファイルの宛先が利用できないなどの潜在的な問題の影響も最小限に抑えられます。

于 2012-05-31T06:51:36.643 に答える
1

他のすべての回答を補完するだけで、絶対にそうしないでください。データをテーブルに挿入し、X 分ごとにジョブを実行するという marc_s のアイデアは、私の意見では最良のアプローチです。

PS1: SP からパッケージを呼び出す方法に関するリンクを次に示します。

/FILEPS2: DTEXECを使用して SQl に保存されているパッケージを呼び出すには、他の質問に答えてください。 /SQL

dtexec /sql "\YourPackage"
于 2012-05-31T08:55:04.983 に答える