记录所有Sql Server插入和更新

时间:2010-12-01 22:29:06

标签: sql-server

如何记录在数据库(MS SQL Server 2005及更高版本)上执行的所有插入和更新?

基本上我想要一个表,我可以在其中记录数据库中的所有插入和更新问题。 触发器很难管理,因为有100个表并且在不断增长。

由于 看涨

2 个答案:

答案 0 :(得分:2)

我们有数百个表,并且不断增长和使用触发器。在较新版本的SQL Server中,您可以使用更改数据捕获或更改跟踪,但我们发现它们不适合审核。

我们拥有的是每个表的两个单独的审计表(一个用于记录实例的详细信息(即使您更新了一百万条记录,也是一行),另一个用于记录实际的旧值和新值),但每个表都有通过运行查找未经审计的表并创建审计触发器的动态SQL proc来创建相同的结构。每次部署时都会运行此proc。

然后,如果要恢复旧值,还应该花时间编写一个proc来将数据拉回审计表。使用这种结构动态写入可能会很棘手,所以最好在首席执行官躲在脖子上,同时恢复意外删除的50,000个用户之前将其放在手边。

答案 1 :(得分:1)

从SQL Server 2008及更高版本开始,您有change data capture

触发器虽然笨拙且维护噩梦,但仍能在2008年之前的版本上完成。