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

时间:2012-12-13 16:02:46

标签: sql sql-server-2008 tsql change-tracking

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

在每次更改后都会填写发送日期

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

1 个答案:

答案 0 :(得分:1)

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

1)按上下文过滤

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

2)使用列更新掩码过滤

此外,我必须承认我仍在进行自己的更改跟踪。我有脚本,我执行自动生成代码触发器。可以对它们进行自定义以防止不更改更新(即更新行不会更改您感兴趣的字段),还可以让我完全控制事物。我可以跟踪我想要的字段,另外我可以将所有跟踪/默认字段(例如suser_sname())移动到跟踪表中,以便日常业务表保持苗条。如果您对此选项感兴趣,请回复,我会发布代码以自动生成给定表名的触发器和跟踪表。