问候大家!
在 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 个“事件”,它们依赖于具有不同谓词(过滤器)的多个表。不幸的是,用户可以更改它。