SQL Server 通知

Posted

技术标签:

【中文标题】SQL Server 通知【英文标题】:SQL Server Notifications 【发布时间】:2012-08-25 04:55:31 【问题描述】:

我正在构建一个从 SQL Server 提取数据的应用程序,服务器的版本可能从 2005 年到 2012 年不同,但最重要的是 2008 年和 2012 年。

如果我想监听数据库中某些表和行的更改,发送或获取这些更改并在我的 C# 应用程序中使用它们,最好的方法是什么?

我不需要更新数据库中的任何数据,这是另一个已经存在的应用程序的工作。

我只想听变化,或轮询变化,或类似的事情。

根据您的经验,什么是最好的,Service Broker?查询通知? MSMQ? Sql依赖?更改数据跟踪?

提前致谢!

【问题讨论】:

您如何定义“最佳”?这听起来像是一个民意调查问题,除非您详细说明您尝试过哪些技术、您期望的挑战以及您打算如何衡量...... 最好我的意思是最简单的架构,我不需要立即更新,但至少在一两分钟内,我目前正在做我的硕士论文,这可能是最后一次我在我的系统中实现的东西,我只是好奇人们以前使用过什么以及他们发现什么容易和有用。 记录是如何进入数据库的? 通过另一个用 c++ 编写的应用程序,该应用程序从网络农场获取数据。但问题是我们无法听到那里的变化,因为我们无法确定它们是否通过。 【参考方案1】:

我认为您可以使用 SQL Server 公开的性能计数器。

【讨论】:

【参考方案2】:

考虑将SQL Server CLR integration 与触发器结合使用。

例如,您可以对您希望的更改进行协议(比如说在您为此目的创建的表中),并且您可以运行一个看门狗进程,该进程以恒定的时间间隔或在特定时间点根据您的需要提取数据.

【讨论】:

你有没有用它来提醒你我的问题?

以上是关于SQL Server 通知的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 通知 - 我的 OnChange 没有触发

SQL Server 通知

触发从 SQL Server 数据库到 asp.net 应用程序的通知 [关闭]

SqlDependency通知sql server 2005不会在多个插入上触发

SQL Server 代理作业在失败时通知多个操作员

错误:未启用当前数据库的SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker。