在忽略单个列的同时使用更改跟踪



目前,我正在使用SQL Server 2008更改跟踪来跟踪对所有表的更改。一切都很好。然而,另一个复杂性是,读取这些更改的应用程序需要对正在跟踪的每个表上的日期列进行更改。应用程序中的更改就像触发器一样,告诉我需要发送额外的数据。如果不加以管理,这可能会导致一个无休止的循环。

有一个发送日期,在读取每个更改后填写

是否可以在数据库/表级别配置忽略表上的单个列,以便在修改该列时不跟踪版本/更改?

使用更改跟踪有两种方法,但都只涉及过滤结果;没有办法按列限制更改跟踪。

1) 按上下文筛选

以下链接显示了如何在应用程序更改数据时更改上下文。如果您更改了特定于进行更改的内容的上下文,则可以在查询时根据该上下文进行筛选。http://msdn.microsoft.com/en-us/library/cc280462(v=sql.105).aspx

2) 使用列更新掩码进行筛选

此外,我不得不承认,我仍然在追踪自己的变化。我有一些脚本可以执行来自动生成代码触发器。它们可以自定义以防止不更改的更新(即行更新,不更改您感兴趣的字段),此外,它们还允许我完全控制事情。我可以跟踪我想要的字段,而且我可以将所有跟踪/默认字段(如suser_sname())移动到跟踪表中,这样日常业务表就可以保持精简。如果你对这个选项感兴趣,可以这样回复,我会发布代码,为给定的表名自动生成触发器和跟踪表。

最新更新