2012-04-01 104 views
1

我正在寻找更好的机制来通知我的桌面客户端一个SQL服务器表已经更改。排除应用服务器层的选项,我正在研究适合现有胖客户端 - > Sql服务器模型的解决方案。我熟悉触发器和轮询,但希望有更聪明的东西。SQL服务器更改通知和SqlDependency

一个选项似乎是SqlDependency。目前我正在研究这个问题,但是有一些人提到它有“限制”,可能对于大量的改变是“不适合的”。我还没有找到很多关于这方面的信息,或许多最近的代码示例。

你用什么来通知sql server表已被修改?

回答

2

除非你有服务,即所有chnages表通过它,然后你是轮询或依赖。所有的依赖都是挂钩到sql server自己的表更改代码并启动更改事件。底层机制非常简单,并且可能会因大量更改而淹没,尝试合理化事件处理程序中的更改至多是有问题的。

你可能会在某处触发一个“通信表”,在那里你可以添加合理化逻辑,然后使用依赖关系。

因此,不是检测对table1中column1的简单更改,而是触发对comms表中的事件记录的插入。

这将是一个PIA,因为你已经排除了应用服务器层,你也大大限制了你做高效率和高效的选择。

+0

哦,如果可以的话,我会有一个应用程序层。目前这不是一个选项:/关于依赖关系的信息不多,只是关于它的一些奇怪的注释有点不妥。感谢您的建议,我认为我将触发器添加到几个“通信”表中,然后对这些表进行轮询。 – Ian 2012-04-01 18:31:10