SQLServer同步复制问题排查方法

页面导航:首页 > 数据库 > MsSql > SQLServer同步复制问题排查方法

SQLServer同步复制问题排查方法

来源: 作者: 时间:2016-01-27 10:35 【

1、应用复制的命令时在订阅服务器上找不到该行

1、应用复制的命令时在订阅服务器上找不到该行

\

 

解决方法:用系统存储过程sp_browsereplcmds(返回分发中存储的可读版本复制命令的结果集,并将其用作诊断工具。 此存储过程在分发服务器上对分发数据库执行)

sp_browsereplcmds [ [ @xact_seqno_start = ] 'xact_seqno_start' ]
    [ , [ @xact_seqno_end = ] 'xact_seqno_end' ] 
    [ , [ @originator_id = ] 'originator_id' ]
    [ , [ @publisher_database_id = ] 'publisher_database_id' ]
    [ , [ @article_id = ] 'article_id' ]
    [ , [ @command_id= ] command_id ]
    [ , [ @agent_id = ] agent_id ]
    [ , [ @compatibility_level = ] compatibility_level ]
排查方法:在分发服务器—分发DB(distribution)

 

 

Use [distribution] 
go
--a、通常事务序列号,查到command_id=1的执行语句
EXEC sp_browsereplcmds @xact_seqno_start='0x00044ED500008F3E00AB00000000',@xact_seqno_end='0x00044ED500008F3E00AB00000000'
 
--查看同步对象表(在以上结果集中找到article_id栏位值)
select *From MSarticles where article_id=344 

 

 

--第1个语句会出现以下两种情况(a/b)

--a、更新时找不到该行

{CALL [dbo].[sp_MSupd_dbo表名] (.....)}

--b、删除时找不到该行

{CALL [dbo].[sp_MSdel_dbo表名] (......}

 

 

了解同步存储过程:

\

解决方法(a、更新、b、删除):在订阅端把缺少的数据行新增(根据以上出错ID加一条记录)或用导入导出方法(SQL语句同步指定以上ID).(原因:订阅端缺少数据行造成删除或更新找不到数据行而出错)

 

--c、新增时出错

{CALL [dbo].[sp_MSins_dbo表]


解决方法(c、新增时出错):新增时出错,解决方法根据提示可能是标识值或主健ID已在(删除订阅端该行数据)或表结构不值造成的

 

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<