Hy guys,
监视db上的指定表我每隔几毫秒(10-20 ms)轮询一次这个表。
是否有机会获得通知(避免SqlDependency,在我的场景中太慢)而不是轮询?
你有什么想法吗?
我的方案是.net + Sql Server 2008
谢谢!
答案 0 :(得分:1)
可以使用将调用WCF /或Web服务的CLR存储过程来完成。这不是很难做到的事情。
这实际上需要2个步骤。
修改数据。 修改数据后,必须将数据发送到clr存储过程。最简单的方法是将其写入一个或多个临时表中。
clr存储过程。 clr存储过程将使用
连接到db“context connection = true”
这样您就可以访问所需的存储过程。加载数据后,将其发送到服务器(WCF / webservice)。在CLR中,您只需添加所需的服务引用。同样在服务器上,您必须为服务器注册一些dll才能使用:
system.web
smdiagnostics
system.runtime.serialization
system.identitymodel
system.identitymodel.selectors
system.messagng
system.transactions.bridge
system.servicemodel
其他所有内容都是用于调用WCF / Web服务的纯.NET代码。 这种方法非常快速且非常可靠。
答案 1 :(得分:0)
您可以使用SqlChangeMonitor class,但在缓存数据方案中包装SqlDependency。不过,你的问题对于你想要这样做的原因有点模糊。
答案 2 :(得分:0)
是否可以更改调用应用程序以代替写入queue?
如果不是,我猜数据库上的一个触发器调用CLR Stored Procedure?这可能会引发任何需要的事件。
答案 3 :(得分:0)
我看到你说你需要通知(并且SqlDependency
可用),但也许你不需要即时通知,并且定期有效地阅读更改将完成任务。如果是,请转到Google Change Data Capture
和Change Tracking
。