5

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

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

服务器的名字没有变,我尝试了sp_dropserver /sp_addserver解决,收到如下错误:

消息 15015,级别 16,状态 1,过程 sp_dropserver,第 42 行
服务器“ServerName”不存在。使用 sp_helpserver 显示可用的服务器。

消息 15028,级别 16,状态 1,过程 sp_addserver,第 74 行
服务器“ServerName”已存在。

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

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

我也试过:

exec sys.sp_cdc_add_job @job_type = N'capture'

我收到以下错误:

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

任何帮助将不胜感激。

4

5 回答 5

7

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

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

如果没有,请修复:

sp_dropserver '<oldname>';  
GO  
sp_addserver '<newname>', local;  
GO  
于 2018-08-24T10:53:35.833 回答
2

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

于 2015-07-01T19:33:48.157 回答
1

检查这些 SQL:

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

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

于 2015-08-23T07:21:14.950 回答
0

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

于 2017-05-26T07:51:48.640 回答
0

添加服务器解决了这个问题:

DECLARE @ServerName NVARCHAR(128) = CONVERT(sysname, SERVERPROPERTY('servername'));
EXEC sp_addserver @ServerName, 'local';
GO
于 2016-05-06T20:14:56.793 回答