是否有一种优雅的方法来跟踪SQL Server 2008中一个表的所有列的修改

时间:2010-10-14 13:53:03

标签: sql-server sql-server-2008 audit

我的数据库中有一个包含100列的表。我想创建一个触发器来审核每个更新操作的修改。

我能想到的是为所有列创建update子句,但它们都是类似的脚本。那么有没有优雅的方法呢?

4 个答案:

答案 0 :(得分:3)

检查Change Data Capture

更新
CDC提供对所有变更细节的跟踪。自SQL Server 2008以来可用。

(更改数据捕获仅适用于SQL Server的Enterprise,Developer和Evaluation版本。 来源:http://msdn.microsoft.com/en-us/library/bb522489.aspx

更轻量级的解决方案是Change Tracking(同步框架),一个code4life mentioned before,自SQL Server 2005以来可用。

UPDATE2:
相关问题(有很多子链接):

答案 1 :(得分:1)

在MSDN上有这个资源,你可能会觉得有用:

Tracking Changes in the Server Database (including SQL Server 2008)

我不确定你是否在使用SQL Server 2008。

答案 2 :(得分:1)

代码生成?

您是否看过http://autoaudit.codeplex.com/使用的技术?

答案 3 :(得分:0)

理论上,您可以使用1个触发器并检查COLUMNS_UPDATED()以了解哪些列已更改。 (未经测试) 查看更多here