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、发布者上,用复制查看器观察,终于跑起来了,乌龟开始追赶白兔,搞定收工

  
 
 

 

 

 

 

posted on 2011-11-03 10:21  大河马  阅读(358)  评论(0编辑  收藏  举报

导航