SQLServer对表进行CDC捕捉时报错:
消息 22832,级别 16,状态 1,过程 sp_cdc_enable_table_internal,第 623 行
无法更新元数据来指示已对表 [dbo].[Big] 启用了变更数据捕获。执行命令 '[sys].[sp_cdc_add_job] @job_type = N'capture'' 时失败。返回的错误为 22836: '无法更新数据库 benlaiSales 的元数据来指示已添加某变更数据捕获作业。执行命令 'sp_add_jobstep_internal' 时失败。返回的错误为 14234: '指定的 '@server' 无效(有效值由 sp_helpserver 返回)。'。请使用此操作和错误来确定失败的原因并重新提交请求。'。请使用此操作和错误来确定失败的原因并重新提交请求
问题原因:
原因:SqlServer安装后修改了主机名,导致以下两个语句结果不一致
SELECT * FROM master.dbo.sysservers
SELECT SERVERPROPERTY('ServerName')
解决办法:
执行下面SQL:
IF serverproperty('servername')<>@@servername
BEGIN
DECLARE @server SYSNAME
SET @server=@@servername
EXEC sp_dropserver @server=@server
SET @server=cast(serverproperty('servername') AS SYSNAME)
EXEC sp_addserver @server=@server,@local='LOCAL'
END
ELSE
PRINT '实例名与主机名一致,无需修改!'
再开启表CDC正常:
EXECUTE sys.sp_cdc_enable_table
@source_schema = N'dbo'
, @source_name = N'Big_Sale'
, @role_name = N'cdc_Admin'--可以自动创建
, @capture_instance=DEFAULT
GO