如何使用C#监控SQL Server表的更改?

92

我有多个应用程序访问同一个数据库,我需要在其中一个应用程序更改某个表格(更新、插入)时得到通知。

数据库和应用程序不在同一台服务器上。


5
你需要什么样的通知?是即时通知吗?你需要一个应用来通知你,还是需要发送电子邮件通知?你真的需要被通知,还是只是想要追踪这些变化? - richard
我只需要知道是否有其他应用程序更新或插入任何数据,我不需要数据本身,只需要一个标志表明此表有新的更改。很抱歉回复晚了,我不知道答案会这么快。 - ToDayIsNow
11个回答

1
另一种非常简单的监控表格的方法是表格版本控制。该系统已被证明在 DNS 同步等建设中可行。为使其正常工作,您需要创建一个包含表名和表版本(以 decimalbigint 格式)的表。在每个需要监控的表中,创建一个插入、更新和删除触发器,当执行时会递增版本控制表中相应的表版本。如果您预计任何受监控的表经常被更改,则需要为版本重用进行规划。最后,在您的应用程序中,每次查询受监控的表时,您还需要查询其版本并将其存储。当您从应用程序更改受监控的表时,您首先查询其当前版本,并仅在版本未更改时处理更改。您可以在 SQL Server 上使用存储过程来完成此项工作。这是一种非常简单但已被证明非常可靠的解决方案。它具有特定的功能用途(确保数据一致性),资源占用较少(不会引发您不会监视的代理事件),但需要应用程序积极检查更改,而不是被动等待事件发生。

我认为这会在包含给定表版本的行周围创建一个锁定瓶颈。 - Dan Def

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接