繁体   English   中英

用于监视DML更改的SQL Server Service Broker

[英]SQL Server Service Broker for monitoring DML changes

我想做的事:

  • 通过C#外部应用程序监听X表上的DB插入/更新语句

  • 希望在每次插入/更新时收到通知

  • 通知后,我想检索插入/更新的行

我如何解决这个问题:

  • 为每个表创建一个DML触发器,该触发器在插入/更新后在每个表上更新服务代理队列

  • 在此之后,我对方法尚不完全清楚。 主要是如何接收来自服务代理队列的通知?

据我了解, SqlDependency需要一个查询来检测更改。 因此,我是否要针对目标队列指定查询?

谢谢

SqlDependency是一种抽象,它恰巧在后台使用Service Broker传递通知。 在这种情况下,我认为您可以忽略它(它是SqlDependency)

实际上,我已经实现了一个类似的系统(排队经纪人中的更改)。 广泛的招是:

  1. 为要捕获的更改类型(任何插入/更新/删除)创建触发器。 触发器将处理XML消息并将其发送到Service Broker队列。
  2. 使用诸如receive top(1000) cast(message_body as xml) from yourQueue类的东西来消耗这些消息。 确保您在此处阅读了最佳做法(诸如处理毒害邮件等)。 您可以将它们全部包装在存储过程中,并让您的应用程序调用它。

另外,如果您不进行激活,则可能每隔一段时间轮询一次,很有可能当您的应用程序进行轮询时,您将希望获取所有消息(或者至少会收到通知,提示有更多消息) 。 因此,您需要循环执行receive语句,或执行诸如“哦……我最多要求1000,而我却得到1000。可能还有更多!”之类的巧妙操作。 因此您知道立即返回以处理排队的消息。 让我知道您是否想对此进行详细说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM