我有一个启用CDC的表,该表引发以下奇怪的行为。
在一个更新中,三个可为空的列之一已经具有值[8,23|NULL|NULL]
,而我仅更新了 其他两列[AlexJ, 1]
,CDC跟踪所有三个列的更改。
2018-06-22 13:55:37.763 NULL NULL NULL
2018-06-22 13:55:37.763 8,23 AlexJ 1
我使用模板化查询从cdc.dbo_Tablename_CT表中获取这些数据。
...
SELECT sys.fn_cdc_map_lsn_to_time([__$start_lsn]) AS 'ModifiedDate',
[Tags],[ModifiedBy], [IsInactive]
FROM cdc.fn_cdc_get_all_changes_dbo_Tablename
(@from_lsn, @to_lsn, N'all update old')
WHERE Id = @Id
...
我该如何解决?这很烦人,可能会让我不使用CDC,这并不是说部署和维护CDC的桌子是在最好的情况下在公园散步。
答案 0 :(得分:0)
对于varchar(max)…标签列,总会置空。
大对象数据类型 当_ $ operation = 1或_ $ operation = 3时,总是为数据类型image,text和ntext的列分配一个NULL值。数据类型为varbinary(max),varchar(max)或nvarchar(max的列)在__ $ operation = 3 时被分配为NULL值,除非在更新期间更改了该列。当__ $ operation = 1时,将在删除时为这些列分配值。捕获实例中包含的计算列的值始终为NULL。