1

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

每次读取更改后都会填写一个发送日期。

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

4

1 回答 1

1

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

1) 按上下文过滤

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

2) 使用列更新掩码过滤

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

于 2013-01-16T04:07:03.420 回答