4

みなさんご挨拶!

SqlDependency では、クエリ通知メカニズムを使用してデータ変更を簡単にサブスクライブできます。(またはodbc 属性を設定することにより)

 SqlDependency dependency = new SqlDependency(
      new SqlCommand("SELECT [ID], [Name] FROM [dbo].[tbl_Contact]", this.CurrentConnection)
 );
 dependency.OnChange += this.dependency_OnChange;

一方、ネイティブ SQL を使用すると、DMV イベントでストアド プロシージャを実行できます。(ユーザーのログアウトと同様)

create queue [myEventQueue] with activation (
   status = on,
   procedure_name = dbo.QueueProcessing,
   max_queue_readers = 2,
   execute as self
)

create service [myNotifications] on queue [myEventQueue]
([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]);

CREATE EVENT NOTIFICATION [myEvent]
ON server
FOR AUDIT_LOGOUT
TO SERVICE 'myNotifications', 'current database'

私の質問は:

  1. SqlDependency なしで (Managment Studio のネイティブ t-sql を使用して) データ変更に対するイベント クエリを作成してサブスクライブできますか?
  2. 「一部のデータが変更された」ときにストアドプロシージャを実行できますか?

助けてくれてありがとう!

PS トリガーを使用できないのはなぜですか?

異なる述語 (フィルター) を持つ複数のテーブルに依存する約 200 の「イベント」があります。残念ながら、ユーザーはそれを変更できます。

4

1 に答える 1