0

我在 sql 2012 中使用 CDC 功能,假设我有一个表名,Employee并且其中也有一些记录。假设某人Last Name在员工表中发生了变化。然后在CDC表中有 2 个条目,在更改前和更改后都有记录。我想知道哪一列被改变了。

我正在关注本教程

4

2 回答 2

1

我认为您正在寻找的是列跟踪。您需要使用 CHANGETABLE 功能来获得您想要的东西。

列跟踪信息出现在 CHANGETABLE(CHANGES ...) 函数返回的 SYS_CHANGE_COLUMNS 列中。

查看这篇MSDN 文章了解更多信息。

于 2014-12-15T05:53:10.063 回答
0

更好的选择。这是如何使用 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

查看文档以获取更多信息。

于 2017-06-14T20:27:27.803 回答