sql-server - 如何监视 SQL Server 中的表的更改

标签 sql-server monitoring notifications

This question很久以前就有人问过,虽然它涵盖了 SQL 2005 和 2008 的可能解决方案,但它缺乏一个适用于 SQL 2000 的好的解决方案,这仍然太常见了。

我需要一种方法来监视数据库表的某些字段的更改,并在这些更改发生时通知我的应用程序,以便我可以将它们作为广播消息在本地网络上发布,任何拥有客户端的人都可以收听它们并将它们显示为警报(想想类似于达到特定阈值的股票市场数据)。

由于几个原因,我不想轮询数据库。 1) 我不想给服务器增加额外的负载。 2)我宁愿获得近乎实时的通知,也不愿等待轮询频率到期。

现在,我可以将逻辑放在更新数据库的应用程序中,但是数据可以从多个来源更新,包括网络,我不想处理跨 DMZ 边界发送通知的网络服务器等。我不不想在 20 种不同的应用程序中维护它(更强大的问题)。

我已经看到使用扩展存储过程和触发器在 SQL 2000 上完成此操作,但 xp 似乎很难跨平台,并且在安装在 SQL 2005 和 2008 上时它们会中断。也许这只是我所举示例中的错误代码见过,我不确定,但我正在寻找适用于 SQL 2000 及更高版本的东西。

有任何想法吗?

编辑:

我曾考虑过放弃对 2000 的支持,但这并不能解决我的问题。我想要一个能够在 future 几年继续发挥作用的解决方案。许多微软技术的一个问题是它们放弃了对它们的支持。例如,通知服务可以满足我的需要,但他们决定在 2008 年弃用它,并且在下一个版本中将不再提供。所以我正在寻找一个很有可能坚持下去的解决方案。

最佳答案

非常简单的解决方案

您可以有一个调用网页的触发器,通知更新。

这可能很糟糕,因为如果服务器无法访问网络,出于某种原因,它可能会使插入操作变得很慢。此外,根据插入的频率,它可能同样糟糕。

替代方案

在触发器中,写入队列。 (我恰好爱上了MSMQ)。然后,在该队列中等待一些东西,您将“实时”收到消息。同样,如上所述,它容易受到更新频率的影响。

更好的计划

有一个将数据发布到“tblUpdatedThings”表的触发器,然后您可以轮询该表。但我知道你不想投票。无论如何,由于我描述的原因,我认为这更好。

关于sql-server - 如何监视 SQL Server 中的表的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1352756/

相关文章:

sql-server - 为 asp.net MVC 应用程序更好地访问数据的路线图

c# - 使用适用于 .Net 的 Azure 管理库创建具有 Azure 访问权限的 SQL Server

java - 计算 Java EE 网络应用程序中用户数量的最佳方法

重启后的android通知

即使使用索引,MongoDb 性能也很慢

SQL Server - 组行

sql-server - SQL 处理 XML 性能 : Insert into columns in a table

postgresql - 如何监控 Postgres 的长时间运行的事务?

python - 使用 H.323 测试遗留语音邮件系统

android - 当设备收到 C2DM 消息时如何播放声音