事务复制问题排查

来源:互联网 发布:软件测试网站大全 编辑:程序博客网 时间:2024/06/07 20:32

前言

今天在搭建事务复制的时候,遇到一个比较棘手的问题。也是不常见的一个场景,分享出来供大家参考


正文

使用导出的脚本建立的发布订阅 。之前是一个发布,订阅到很多服务器,现在是想把这个发布分开,所以建了很多发布,在建上第一个发布的时候,没有问题。订阅也正常。然后在建第二个发布订阅之后不久,就提示:
进程无法在“DATABASE”上执行“sp_replcmds”
因为一个库上的发布都使用的是一个log reader ,当log reader 出现问题是,相关的发布就都无法正常工作。
日志读取代理的详细错误信息如下:

作业内的详细错误信息:

-querytimeout 1800
-readbatchsize 500
-readbatchsize 500000
2017-12-11 02:43:46.831 状态: 4096,代码: 20024,文本: '初始化'。
2017-12-11 02:43:46.831 代理正在运行。请使用复制监视器查看此代理会话的详细信息。
状态: 0,代码: 20011,文本: '进程无法在“DATABASE”上执行“sp_replcmds”。'。
2017-12-11 02:43:46.846 进程无法在“DATABASE”上执行“sp_replcmds”。
状态: 0,代码: 18764,文本: '筛选存储过程 1470068423 的执行失败。有关详细信息,请参阅 SQL Server 错误日志。'。
2017-12-11 02:43:46.846 状态: 0,代码: 18805,文本: '日志扫描进程无法从日志序列号(LSN) {00275656:00000cc6:0020} 构造复制命令。请备份发布数据库,然后与客户支持服务部门联系。'。
2017-12-11 02:43:46.846 状态: 0,代码: 22037,文本: '进程无法在“DATABASE”上执行“sp_replcmds”。'。
尝试解决办法:
 EXEC sp_repldone @xactid =NULL, @xact_segno =NULL, @numtrans = 0, @time =0, @reset =1
EXEC sp_replflush
 重启SQL Server Agent服务。

解决

以上办法,都没有能够解决问题。只能根据目前的现象来推论了。既然加第二个发布订阅的时候除了问题。那就把这个发布订阅删除了,然后试试。在删除了新建的2个发布订阅后,之前的那个发布订阅就正常运行了。

问题2

新建别名的情况下,, 是不需要ping同计算机名字的,不用在hosts里面增加解析,通过别名SSMS就可以访问这个名字。
但是某一个别名始终无法访问,原因是别名中有空格

总结

以上2个问题看上去很棘手,但解决办法很简单。实际上很多问题的解决都是一样,需要大胆尝试,细心求证。做DBA的一个最基本素质就是一定要细心。然后收集目前已知的信息,分析,然后解决问题






原创粉丝点击