Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 表行已更改的通知_Sql Server_Sql Server 2000 - Fatal编程技术网

Sql server 表行已更改的通知

Sql server 表行已更改的通知,sql-server,sql-server-2000,Sql Server,Sql Server 2000,当表的行被更改时,这些更改的行将被写入XML,并让我知道表已被更改 如何做到这一点?如果您正在寻找严格的TSQL或SQL Server解决方案: 编写一个存储过程来处理更新、删除和插入功能 拒绝更新,删除和插入给用户 允许EXEC在此新存储过程上对用户执行 在每次调用存储过程时,在另一个表中创建一个条目,该表是专门为审计而构建的 编写SQL作业以轮询此审核表中的新记录。使用SQL Mail发送电子邮件。你不清楚你想要什么样的通知,但我假设是电子邮件 第二个不太吸引人的解决方案:您还可以使用表

当表的行被更改时,这些更改的行将被写入XML,并让我知道表已被更改


如何做到这一点?

如果您正在寻找严格的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的应用程序的构建者不太可能将其视为哑数据存储?问题是我无法更改存储过程。也许我可以加一个触发器。但我怎么知道这些变化呢。有什么好方法可以做到这一点吗?问题是我无法更改存储的进程。也许我可以加一个触发器。但我怎么知道这些变化呢。有什么好办法吗?