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

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

原始产品版本: SQL Server 2008 和更高版本
原始 KB 数: 3200464

现象

分离在 Change Data Capture SQL Server 2014 或更低版本上启用的数据库,并将其附加到 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;

错误消息

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

解决方法

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

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