みなさんご挨拶!
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'
私の質問は:
- SqlDependency なしで (Managment Studio のネイティブ t-sql を使用して) データ変更に対するイベント クエリを作成してサブスクライブできますか?
- 「一部のデータが変更された」ときにストアドプロシージャを実行できますか?
助けてくれてありがとう!
PS トリガーを使用できないのはなぜですか?
異なる述語 (フィルター) を持つ複数のテーブルに依存する約 200 の「イベント」があります。残念ながら、ユーザーはそれを変更できます。