2011-02-06 12 views
0

SQL Server 2008で非同期トリガの実行を一時的に抑制する方法はありますか?キューから読み込むQueueとServiceブローカでトリガを実装しました。これらのトリガーは操作を大幅に遅くしますが、トリガーの実行を停止するにはどうすればいいのですが、後で実行するためにキューに入ることができます。SQL Server 2008:非同期トリガの実行を一時的に一時停止できますか?

ありがとうございます!

答えて

0

。他のすべてのもの(トリガー、待ち行列など)は、実行する必要があるときに実行されています。この方法では、メッセージはキューに入りますが、誰もそこから読み取ることはありません。

第2の:重い持ち上げスクリプトを実行します。キューは、後で実行される操作で満たされています。

サード:コメントを解除し、元の状態でストアドプロシージャの本体フォース

:無効を実行した後、キューの操作を有効にします。これでストアドプロシージャがキューからの読み込みを開始します。そして、変更は非同期的に適用されます。

-1

はい、DISABLE TRIGGERとENABLE TRIGGERが終了したとき。マニュアルについては、http://msdn.microsoft.com/en-us/library/ms189748.aspxを参照してください。

これは、入力したデータに対してトリガーが実行されないことを意味します。最終的にトリガーが発生するものが必要な場合は、手作業で行う必要があります。これにはロジックが重複していることが必要であることに注意してください。適切な注意を払ってください。

まず:キュー内のメッセージを読み、ストアドプロシージャの本体をコメント我々が思いついたものをここで

+0

いいえ、私は間違いなく私が変更したすべてのデータでトリガーを実行したいと思います。それで、トリガーが働きたいと思っていることを無効/有効にする。また、このトリガーのロジックは重すぎると複雑で、私はそれを複製したくありません。 – anthares

1

ストアドプロシージャをコメントアウトしてから、キューを無効にして有効にする最初の答えが有効です。 私は同様の状況を持っています。 キューは、ストアドプロシージャを使用してアクティブ化します。私は(最初の回答とほぼ同じですが、私は、ストアドプロシージャの本文をコメントアウトしていない)、次のでした : 1.キューを非アクティブ化します。アクティベーション(状態=オフ)と

ALTERキューQUEUENAMEを。

  1. 大量更新を行うと、メッセージはキューに保存されます。

  2. キューアクティブ化:活性化

ALTERキューQUEUENAME(ステータス=オン);

キューストアドプロシージャは、キュー内に保存されている各メッセージに対して実行されます。

関連する問題