表行已更改的通知

时间:2010-09-08 02:31:21

标签: sql-server sql-server-2000

当表的行被更改时,这些已更改的行将写入XML,并告诉我该表已更改。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果您正在寻找严格的TSQL或SQL Server解决方案:

  • 编写存储过程以处理UPDATEDELETEINSERT功能。
  • 向用户
  • 拒绝UPDATEDELETEINSERT
  • 允许EXEC向这个新存储过程的用户
  • 在每次调用存储过程中,进入另一个表,专门用于审计。
  • 编写SQL作业以轮询此审计表以获取新记录。使用SQL Mail发送电子邮件。您不清楚自己想要什么样的通知,但我接受了电子邮件。

第二个不太吸引人的解决方案:您还可以使用表格上的触发器来捕获UPDATEDELETEINSERT活动。强烈考虑存储过程解决方案而不是触发器。

答案 1 :(得分:0)

如果无法改变表中数据的更改方式,最佳解决方案是设置触发器以捕获单独表中的更改,然后编写一些代码以定期轮询此表,并构建xml文件。

值得注意的是,在编辑此表中的数据时,这可能会降低数据库性能(适用于用户进行更改时的审核,对编程更改的数据不利),并且来自触发器的任何错误都会导致相当误导的消息抛出sql server。

有关设置触发器的一些指示,请参阅this question

相关问题