在表级别启用 CDC 时出错

Jay*_*iya 5 sql sql-server cdc

我在 SQL Server 2012 企业版 (11.0.2100.60) 上启用变更数据捕获 (CDC)

. 我可以使用以下 SQL 在数据库级别启用它,但无法在表级别启用。

Use DatabaseName
GO

Exec sys.sp_cdc_enable_db 
GO

EXEC sys.sp_cdc_enable_table @source_schema = N'dbo'
                            ,@source_name = N'TableName'
                            , @role_name = NULL
GO
Run Code Online (Sandbox Code Playgroud)

得到错误,如

'msg 22832,级别 16,状态 1,过程 sp_cdc_enable_table_internal,第 623 行

无法更新指示表 [dbo].[TableName] 已为变更数据捕获启用的元数据。执行命令 '[sys].[sp_cdc_add_job] @job_type = N'capture'' 时发生故障。返回的错误为 22836:“无法更新数据库 DatabaseName 的元数据以指示已添加变更数据捕获作业。执行命令“sp_add_jobstep_internal”时发生故障。返回的错误为 14234:“指定的‘@server’无效(sp_helpserver 返回有效值)。”。使用操作和错误来确定失败的原因并重新提交请求。'。使用操作和错误来确定失败的原因并重新提交请求。

有人会帮助我摆脱这种情况吗?

提前致谢..!!

小智 5

我最近也遇到了同样的问题。

在我看来,计算机的名称很可能已更改。如果这是真的,请继续阅读...

SQL 自动识别名称更改计算机。但是,系统元数据必须手动更新。(来源:http ://msdn.microsoft.com/en-us/library/ms143799.aspx )

SQL语句

sp_dropserver old_name\instancename;
GO
sp_addserver new_name\instancename, local;
GO
Run Code Online (Sandbox Code Playgroud)

例子

sp_dropserver name-PC\SQLEXPRESS;
GO
sp_addserver CLT55\SQLEXPRESS, local;
GO
Run Code Online (Sandbox Code Playgroud)

参考问题及解决方案