SQL Server数据库更改侦听器C#

我想从C#中侦听SQL Server数据库中数据的更改。 我希望有一些听众可以用来确定我的数据是否陈旧。 尽管是一个相当常见的场景,我找不到任何不仅仅是轮询数据库的解决方案。

我使用Linq-To-SQL来访问数据,因此有一个DataContext对象,我希望我可以监听一个on data changed事件,但我似乎无法找到它。

我感谢这是一个非常重要的障碍(从C#方法到SQL Server DB),我之所以认为这是一个已解决的问题的原因是它是GUI的常见要求。 如果无法监听更新,如何保持GUI中显示的数据新鲜(当它由SQL Server数据源支持时)。

虽然这不适用于GUI工作,但我期待从该领域中适应某些东西。

有没有办法在C#中订阅SQL Server数据库更改事件?

我以前从未使用过它们,但您是否尝试过SQL Server事件通知? 请参阅此文章: SQL Server事件通知入门

您正在寻找SqlDependency类 ,它允许您侦听SQL查询的结果集的更改。

DataContext不会为您提供SQL Server的任何类型的侦听器function。 最好的办法是创建一个轮询应用程序,甚至是一个单独的线程,它定期轮询数据库以进行更改并公开主应用程序可以监听的事件。

如果您使用的是SQL Server 2008,则内置的Change Data Capture非常方便。

http://msdn.microsoft.com/en-us/library/bb522489.aspx

您可以阅读CDC数据。

我将在数据库中使用一个包含单行的表来编目上次更新,插入或删除的事件,然后在每个重要表上创建触发器以更新此表,然后轮询此表以进行更改。