Sql server 表行已更改的通知
当表的行被更改时,这些更改的行将被写入XML,并让我知道表已被更改Sql server 表行已更改的通知,sql-server,sql-server-2000,Sql Server,Sql Server 2000,当表的行被更改时,这些更改的行将被写入XML,并让我知道表已被更改 如何做到这一点?如果您正在寻找严格的TSQL或SQL Server解决方案: 编写一个存储过程来处理更新、删除和插入功能 拒绝更新,删除和插入给用户 允许EXEC在此新存储过程上对用户执行 在每次调用存储过程时,在另一个表中创建一个条目,该表是专门为审计而构建的 编写SQL作业以轮询此审核表中的新记录。使用SQL Mail发送电子邮件。你不清楚你想要什么样的通知,但我假设是电子邮件 第二个不太吸引人的解决方案:您还可以使用表
如何做到这一点?如果您正在寻找严格的TSQL或SQL Server解决方案:
- 编写一个存储过程来处理
、更新
和删除
功能插入
- 拒绝
,更新
和删除
给用户插入
- 允许EXEC在此新存储过程上对用户执行
- 在每次调用存储过程时,在另一个表中创建一个条目,该表是专门为审计而构建的
- 编写SQL作业以轮询此审核表中的新记录。使用SQL Mail发送电子邮件。你不清楚你想要什么样的通知,但我假设是电子邮件
第二个不太吸引人的解决方案:您还可以使用表上的触发器捕获
更新
、删除
和插入
活动。如果您正在寻找严格的TSQL或SQLServer解决方案:,请强烈考虑所存储的PROC解决方案超过触发器。< /P> < P>
- 编写一个存储过程来处理
、更新
和删除
功能插入
- 拒绝
,更新
和删除
给用户插入
- 允许EXEC在此新存储过程上对用户执行
- 在每次调用存储过程时,在另一个表中创建一个条目,该表是专门为审计而构建的
- 编写SQL作业以轮询此审核表中的新记录。使用SQL Mail发送电子邮件。你不清楚你想要什么样的通知,但我假设是电子邮件
第二个不太吸引人的解决方案:您还可以使用表上的触发器捕获
更新
、删除
和插入
活动。强烈考虑存储的PROC解决方案超过触发器。< P>如果您不能更改表中数据的更改方式,最好的解决办法是设置触发器以捕获单独表中的更改,然后编写一些代码定期轮询该表,并构建XML文件。
值得注意的是,在编辑此表中的数据时,这可能会降低数据库性能(有利于用户进行更改时的审核,不利于按程序更改的数据),并且来自触发器的任何错误都会导致从sql server中抛出具有误导性的消息
有关设置触发器的一些提示,请参阅。如果无法更改表中数据的更改方式,最好的解决方案是设置触发器以捕获单独表中的更改,然后编写一些代码定期轮询此表,并构建xml文件 值得注意的是,在编辑此表中的数据时,这可能会降低数据库性能(有利于用户进行更改时的审核,不利于按程序更改的数据),并且来自触发器的任何错误都会导致从sql server中抛出具有误导性的消息
有关设置触发器的一些提示,请参阅。+1:如果这是为了维护,而不是为了新开发,触发器会更灵活。@OMG:我总是在触发器上来回切换。甚至因为建议将其作为第二选择而获得否决票。这一场景让人尖叫“要做的事情太多了”。审计很有趣,但它可以是任意一种方式,也取决于环境。50-50.是的,有时候事情是“时髦”的。如果是新开发的,我尽可能避免使用触发器&希望每个人都能使用存储过程。我开始更多地接受触发器,但总体上还是不喜欢ORM。你是说你不喜欢触发器方法,因为在ORM场景中,触发器通常用于向数据库层添加规则,尽管存储过程表明数据库层较厚,但基于ORM的应用程序的构建者不太可能将其视为哑数据存储?+1:如果这是为了维护,而不是为了新的开发,触发器会更灵活。@OMG:我总是反复使用触发器。甚至因为建议将其作为第二选择而获得否决票。这一场景让人尖叫“要做的事情太多了”。审计很有趣,但它可以是任意一种方式,也取决于环境。50-50.是的,有时候事情是“时髦”的。如果是新开发的,我尽可能避免使用触发器&希望每个人都能使用存储过程。我开始更多地接受触发器,但总体上还是不喜欢ORM。你是说你不喜欢触发器方法,因为在ORM场景中,触发器通常用于向数据库层添加规则,虽然存储过程表明数据库层更厚,但基于ORM的应用程序的构建者不太可能将其视为哑数据存储?问题是我无法更改存储过程。也许我可以加一个触发器。但我怎么知道这些变化呢。有什么好方法可以做到这一点吗?问题是我无法更改存储的进程。也许我可以加一个触发器。但我怎么知道这些变化呢。有什么好办法吗?