SQL Server 事务复制故障处理一例

1、事务复制正常工作,某日,忽然报错:

甚为惶恐,以为必须重做

2、访问高峰,无暇重做,抱侥幸心理,放狗。。。

3、死马当活马,试烹之:

A、在发布服务器上,执行

 

use  [ distribution ]
 
sp_browsereplcmds  ' 0x00093FFA00002A0E00E000000000 ', ' 0x00093FFA00002A0E00E000000000 '

得到出错的事务明细

{CALL [dbo].[sp_MSdel_dbot_test] (27,104285)}

猜了半天,认为这个事务的作用是删除dbo.t_test表中的某些数据,后面的数字不知道什么意思
B、跑到订阅服务器上,执行
use  [test ]
exec sp_helptext  [ sp_MSdel_dbot_test ]
 
 探寻这个事务到底干了啥
create  procedure  [ dbo ]. [ sp_MSdel_dbot_test ]  
   @pkc1  int,  
   @pkc2  int  
as  
begin    
  delete  [ dbo ]. [ t_test ]  
where  [ te_bakid ]  =  @pkc1  
   and  [ te_recid ]  =  @pkc2  
if  @@rowcount  =  0  
     if  @@microsoftversion > 0x07320000  
         exec sp_MSreplraiserror  20598  
end 

 

3、小新的小狗——真像大白

原来那两个数字,就是主键(这张表是联合主键)

试想,发布者要求订阅者,和它一样,删除某张表,某主键的数据,但是订阅者本身没这条数据,没法删,于是罢工

万恶的微软报错信息及翻译,就不能说得明白点吗?

 

4、尝试野蛮操作,既然你没有,没法删,那就瞎编几条,反正是用来删除的

此处省略n行insert代码

 

5、发布者上,用复制查看器观察,终于跑起来了,乌龟开始追赶白兔,搞定收工

  
 
 

 

 

 

 

转载于:https://www.cnblogs.com/andyryu/archive/2011/11/03/2234208.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值