[英]SQL Server Service Broker for monitoring DML changes
我想做的事:
通过C#外部应用程序监听X表上的DB插入/更新语句
希望在每次插入/更新时收到通知
通知后,我想检索插入/更新的行
我如何解决这个问题:
为每个表创建一个DML触发器,该触发器在插入/更新后在每个表上更新服务代理队列
在此之后,我对方法尚不完全清楚。 主要是如何接收来自服务代理队列的通知?
据我了解, SqlDependency
需要一个查询来检测更改。 因此,我是否要针对目标队列指定查询?
谢谢
SqlDependency是一种抽象,它恰巧在后台使用Service Broker传递通知。 在这种情况下,我认为您可以忽略它(它是SqlDependency)
实际上,我已经实现了一个类似的系统(排队经纪人中的更改)。 广泛的招是:
receive top(1000) cast(message_body as xml) from yourQueue
类的东西来消耗这些消息。 确保您在此处阅读了最佳做法(诸如处理毒害邮件等)。 您可以将它们全部包装在存储过程中,并让您的应用程序调用它。 另外,如果您不进行激活,则可能每隔一段时间轮询一次,很有可能当您的应用程序进行轮询时,您将希望获取所有消息(或者至少会收到通知,提示有更多消息) 。 因此,您需要循环执行receive
语句,或执行诸如“哦……我最多要求1000,而我却得到1000。可能还有更多!”之类的巧妙操作。 因此您知道立即返回以处理排队的消息。 让我知道您是否想对此进行详细说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.