You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建SQL Server复制发布失败(错误22835)求助排查方案

故障原因
  • 备份恢复的数据库XXX存在CDC/复制元数据残留:原数据库曾配置过Change Data Capture(CDC)或复制,备份时相关元数据被包含在内;恢复后SQL Server Agent中虽无可见作业,但msdb系统库的作业关联表(如sysjobs、sysjobsteps)或目标数据库的CDC内部表(如cdc.cdc_jobs)仍残留无效的作业ID关联记录。
  • 现有清理脚本不彻底:sp_removedbreplication和sp_cleanupdbreplication仅针对核心复制对象做清理,未覆盖CDC相关元数据及msdb中无效的作业关联记录,导致创建发布时触发的CDC作业删除逻辑找不到对应job_id,抛出14262/22835错误。
修复步骤

1. 清理目标数据库XXX的CDC元数据

USE XXX;
GO

-- 检查CDC启用状态
SELECT name, is_cdc_enabled FROM sys.databases WHERE name = 'XXX';

-- 尝试禁用CDC(若执行失败,直接跳过执行后续清理)
EXEC sys.sp_cdc_disable_db;
GO

-- 手动清理CDC残留的作业关联记录
DELETE FROM cdc.cdc_jobs WHERE database_id = DB_ID('XXX');
DELETE FROM msdb.dbo.sysjobactivity WHERE job_id IN (SELECT job_id FROM cdc.cdc_jobs WHERE database_id = DB_ID('XXX'));
DELETE FROM msdb.dbo.sysjobhistory WHERE job_id IN (SELECT job_id FROM cdc.cdc_jobs WHERE database_id = DB_ID('XXX'));
GO

2. 清理msdb中无效的作业记录

USE msdb;
GO

-- 查找与XXX数据库关联的无效作业
SELECT j.job_id, j.name, s.database_name
FROM sysjobs j
JOIN sysjobsteps s ON j.job_id = s.job_id
WHERE s.database_name = 'XXX';

-- 批量删除这些无效作业
DECLARE @job_id UNIQUEIDENTIFIER;
DECLARE job_cursor CURSOR FOR
SELECT j.job_id
FROM sysjobs j
JOIN sysjobsteps s ON j.job_id = s.job_id
WHERE s.database_name = 'XXX';

OPEN job_cursor;
FETCH NEXT FROM job_cursor INTO @job_id;

WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC sp_delete_job @job_id = @job_id;
    FETCH NEXT FROM job_cursor INTO @job_id;
END

CLOSE job_cursor;
DEALLOCATE job_cursor;
GO

3. 彻底清理复制元数据

USE distribution;
GO

-- 删除distribution库中XXX相关的复制记录
DELETE FROM MSpublisher_databases WHERE publisher_db = 'XXX';
DELETE FROM MSpublications WHERE publisher_db = 'XXX';
DELETE FROM MSarticles WHERE publisher_db = 'XXX';
DELETE FROM MSsubscriptions WHERE publisher_db = 'XXX';
GO

USE master;
GO

-- 再次执行复制清理脚本
EXEC sp_removedbreplication 'XXX';
EXEC sp_cleanupdbreplication;
GO

4. 验证并重新创建发布

完成清理后,确认以下内容:

  • XXX数据库的is_cdc_enabled字段值为0
  • msdb中无任何与XXX相关的作业记录
  • distribution库中无XXX相关的复制元数据
    之后即可重新通过SQL Server Management Studio创建发布。

内容的提问来源于stack exchange,提问作者Dmitriy Ryabin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 10:35:24