我在 sql 2012 中使用 CDC 功能,假设我有一个表名,Employee
并且其中也有一些记录。假设某人Last Name
在员工表中发生了变化。然后在CDC
表中有 2 个条目,在更改前和更改后都有记录。我想知道哪一列被改变了。
我正在关注本教程
我在 sql 2012 中使用 CDC 功能,假设我有一个表名,Employee
并且其中也有一些记录。假设某人Last Name
在员工表中发生了变化。然后在CDC
表中有 2 个条目,在更改前和更改后都有记录。我想知道哪一列被改变了。
我正在关注本教程
我认为您正在寻找的是列跟踪。您需要使用 CHANGETABLE 功能来获得您想要的东西。
列跟踪信息出现在 CHANGETABLE(CHANGES ...) 函数返回的 SYS_CHANGE_COLUMNS 列中。
查看这篇MSDN 文章了解更多信息。
更好的选择。这是如何使用 CDC 函数判断 LastName 值是否已更改
SELECT
sys.fn_cdc_map_lsn_to_time(x.__$start_lsn) AS ChangeDateTime
, x.__$start_lsn
, x.__$operation
, x.__$update_mask
, x.YourPrimaryKeyColumn
, x.LastName
, sys.fn_cdc_has_column_changed ('YourCDCInstanceName', 'LastName', x.__$update_mask) LastNameHasChanged
FROM cdc.fn_cdc_get_all_changes_YourCDCInstanceName(@from_lsn, @to_lsn, N'all') x
查看文档以获取更多信息。