将启用了 CDC 的数据库附加到 Windows 上的 SQL Server 2016 或 SQL Server 2017 实例时出错

本文可帮助你解决无法将已启用 CDC 的数据库附加到 Windows 上的 SQL Server 2016 或 SQL Server 2017 实例的问题。

原始产品版本:SQL Server 2008 及更高版本
原始 KB 编号: 3200464

症状

分离在 SQL Server 2014 或更低版本上启用的数据库Change Data Capture,并将其附加到 Windows 实例上的 SQL Server 2016 或 SQL Server 2017。 在这种情况下,运行 sp_cdc_enable_table 系统过程时遇到以下错误:

命令

EXEC sys.sp_cdc_enable_table @source_schema='<schema name>',
@source_name='<source name>', @role_name='<role name>',  
@supports_net_changes=1, @allow_partition_switch=0;

错误消息

消息 22832,级别 16,状态 1,过程
sp_cdc_enable_table_internal,第 639 行 [Batch Start Line 0]
无法更新指示表 [架构名称>]< 的元数据。 [<对象名称>] 已启用更改数据捕获。 执行命令“insert into [cdc]”时失败。[captured_columns]”。 返回的错误为 213:“提供的值的列名或数目与表定义不匹配。”。 使用操作和错误来确定失败的原因并重新提交请求。

解决方案

若要解决此问题,请在 Windows 上启用的 SQL Server 2016 或 SQL Server 2017 实例上Change Data Capture附加数据库后运行sp_cdc_vupgrade

有关详细信息,请参阅 附加数据库