我想做什么:
通过C#外部应用程序监听X表上的数据库插入/更新语句
在每次插入/更新时,我都希望收到通知
我想要检索插入/更新的行
我如何接近这个:
为每个表创建一个DML触发器,在每次插入/更新后更新服务代理队列
在此之后,我对这种方法并不完全清楚。主要是,如何从服务代理队列接收通知?
根据我的理解,SqlDependency
需要一个可以检测到更改的查询。因此,我是否针对目标队列指定查询?
由于
答案 0 :(得分:0)
SqlDependency是一种抽象,恰好使用Service Broker来传递通知。在这种情况下,我认为你可以忽略它(它是SqlDependency)
我实际上已经实现了一个类似的系统(在代理中排队更改)。广泛的招数是:
receive top(1000) cast(message_body as xml) from yourQueue
等内容消费这些消息。确保你在这里阅读最佳实践(诸如毒物消息处理之类的东西)。您可以将所有内容包装在存储过程中并让应用程序调用它。 另外,如果你想避免激活,你可能会在某个时间间隔进行轮询,很可能当你的应用程序进行轮询时,你可能想要获取所有消息(或者至少要通知那里更多)。因此,您需要在循环中执行receive
语句或做一些聪明的事情,例如“哦......我最多要求1000,我得到1000.可能还有更多!”所以你知道立即回去处理排队的消息。如果您希望我详细说明这一点,请告诉我。