【发布时间】:2016-08-15 14:25:38
【问题描述】:
我想做什么:
通过 C# 外部应用程序监听 X 表上的 DB 插入/更新语句
我希望在每次插入/更新时收到通知
收到通知后我想检索插入/更新的行
我是如何处理这个问题的:
为每个表创建一个 DML 触发器,在插入/更新后更新每个表上的服务代理队列
在此之后,我对方法并不完全清楚。主要是如何接收服务代理队列的通知?
据我了解,SqlDependency 需要一个查询来检测更改。因此,我是否要针对目标队列指定查询?
谢谢
【问题讨论】:
-
您希望在队列中找到什么?更改的行的标识符列表?还是实际更改的列表?无论哪种方式,您都将对触发器隐藏消息的队列使用
receive语句。您还可以查看外部激活(将带有“服务代理”的术语放入您最喜欢的搜索引擎以获取更多详细信息)。 -
理想情况下,我会根据需要使用 XML 格式的实际更改。关于外部激活,我的理解是它每次都会激活 exe 文件(当然我可能错了),理想情况下,我希望与 db 实例保持恒定连接并在每个 DML 触发器时得到通知。因此要澄清我应该在哪里使用 Receive 语句?是否应该在 SqlDependency 查询中定义?
标签: c# sql-server service-broker