【发布时间】:2020-08-01 09:43:08
【问题描述】:
在 SQL Server 中使用Change Tracking 时,您应该使用CHANGE_TRACKING_IS_COLUMN_IN_MASK 来确定在处理更新时更改了哪一列。比如像这样:
DECLARE @last_synchronization_version bigint = ...;
DECLARE @column_id int = ...;
-- The statement below returns 1 if the specified column (@column_id) was changed, otherwise 0.
SELECT CHANGE_TRACKING_IS_COLUMN_IN_MASK(@column_id, SYS_CHANGE_COLUMNS)
FROM CHANGETABLE(CHANGES dbo.MyTable, @last_synchronization_version) AS CT
我想知道,有没有办法自己实现CHANGE_TRACKING_IS_COLUMN_IN_MASK,这样我就可以在我的应用程序中使用SYS_CHANGE_COLUMNS 的值,而不必在执行查询时事先知道我的应用程序对哪些列感兴趣?
例如,当我只更改ID为11的列的值时,SYS_CHANGE_COLUMNS的值是0x000000000B000000。
如何以编程方式确定此掩码是否包含第 11 列已更改的信息?
【问题讨论】:
-
@lptr 感谢分享相关帖子,但他们没有回答我的问题。
标签: sql sql-server bitmask change-tracking