SQL Server 2012年更改数据捕获错误 14234



我在 SQL Server 2012 实例上设置变更数据捕获时遇到问题。每当我尝试在表上启用CDC时,都会收到以下错误:

Msg 22832,级别 16,状态 1,程序 sp_cdc_enable_table_internal, 623
路 无法更新指示表的元数据 [德博]。[表名称] 已启用变更数据捕获。
失败 在执行命令"[sys]时发生。[sp_cdc_add_job] @job_type = N'捕获''。
返回的错误为 22836:"无法更新数据库 [数据库名称] 的元数据以指示变更数据捕获 已添加作业。执行命令时发生故障 "sp_add_jobstep_internal"。
返回的错误是 14234:" 指定的"@server"无效(有效值由 sp_helpserver).'。使用操作和错误来确定 的原因 失败并重新提交请求。使用操作和错误来 确定失败的原因并重新提交请求。

服务器的名称没有更改,我尝试了sp_dropserver/sp_addserver解决方案并收到以下错误:

Msg 15015,级别 16,状态 1,过程 sp_dropserver,第 42
行 服务器"服务器名称"不存在。使用sp_helpserver显示 可用的服务器。

Msg 15028,级别 16,状态 1,过程 sp_addserver,第 74
行 服务器"服务器名称"已存在。

正如我所说,我正在尝试设置 CDC 而不是复制。SQL Server 的版本是: 11.0.5058.0 (SQL Server 2012 SP2)

我在表级别启用CDC时查看了错误并尝试了该解决方案。

我也试过:

exec sys.sp_cdc_add_job @job_type = N'capture'

我收到以下错误:

Msg 22836,级别 16,状态 1,过程 sp_cdc_add_job_internal,第 282
行 无法更新数据库 [数据库名称] 的元数据以指示 已添加变更数据捕获作业。发生故障 执行命令"sp_add_jobstep_internal"时。
返回的错误为 14234:"指定的'@server'无效(有效值由 sp_helpserver 返回)。使用操作和错误来 确定失败的原因并重新提交请求。

任何帮助将不胜感激。

如此处所列,检查名称是否匹配

SELECT srvname AS OldName FROM master.dbo.sysservers
SELECT SERVERPROPERTY('ServerName') AS NewName

如果没有,请使用以下方法修复:

sp_dropserver '<oldname>';  
GO  
sp_addserver '<newname>', local;  
GO  

该错误是由于 SERVERPROPERTY('ServerName')) 和 master.dbo.sysservers 之间的值不匹配引起的

检查以下 SQL:

SELECT * FROM master.dbo.sysservers
SELECT SERVERPROPERTY('ServerName')

如果您的SERVERPROPERTY('ServerName')不是任何sysservers,则解决方法是更改您的计算机名称以匹配其中之一。

添加服务器可解决此问题:

DECLARE @ServerName NVARCHAR(128) = CONVERT(sysname, SERVERPROPERTY('servername'));
EXEC sp_addserver @ServerName, 'local';
GO

我也有类似的情况,我恢复了一个从另一台Windows机器获得的bak文件,该文件保留了具有旧PC名称的Windows用户帐户。我删除了备份,创建了一个空的数据库并还原到该数据库。这解决了我的问题

最新更新