码迷,mamicode.com
首页 > 其他好文 > 详细

队列读取器代理 遇到错误 Row handle is invalid

时间:2018-01-26 20:46:27      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:alt   msi   select   obj   sql   sso   _id   nbsp   订阅   

原文:队列读取器代理 遇到错误 Row handle is invalid


今天测试在发布中更改表名称,在发布数据库更改后重新发布这个表。
但是原来的表在订阅没有删除,不小心插入数据到原表中,队列读取器停止并报错。


技术分享图片

技术分享图片



队列读取器代理在连接“HZC”上的“DBname”时遇到错误“Row handle is invalid.”。
请确保正确定义了分发和订阅,并确保这两台服务器都在运行。 


队列应用到发布服务器失败,原因是在发布数据库中找不到表对象


解决办法:

技术分享图片


--先在订阅数据库把堵塞的队列删除
SELECT *  FROM [dbo].[MSrepl_queuedtraninfo] (NOLOCK)order by maxorderkey asc

DELETE FROM [dbo].[MSrepl_queuedtraninfo] WHERE tranid='Ha;.ha7`Q1K<N4PVbKTgD=5---/XHM--'
DELETE FROM [dbo].[MSreplication_queue]   WHERE tranid='Ha;.ha7`Q1K<N4PVbKTgD=5---/XHM--'


执行后队列读取器会回到正常状态。
接下来为了确保队列不受原来的订阅表影响,删除原来的【触发器】即可。

DROP TRIGGER trg_MSsync_del_Tab,trg_MSsync_ins_Tab,trg_MSsync_upd_Tab

--也可以把没有的数据和对象从订阅库中删除!
DROP PROCEDURE sp_MSdel_dboTab,sp_MSins_dboTab,sp_MSupd_dboTab

DELETE FROM dbo.MSreplication_objects WHERE article='Tab'

DELETE FROM dbo.MSsubscription_articles WHERE article='Tab'

DELETE FROM dbo.MSsubscription_articlecolumns 
WHERE artid IN(SELECT artid FROM dbo.MSsubscription_articles WHERE article='Tab')


原来的订阅数据库的这个表【Tab】就不影响发布了,可删除或保留。





队列读取器代理 遇到错误 Row handle is invalid

标签:alt   msi   select   obj   sql   sso   _id   nbsp   订阅   

原文地址:https://www.cnblogs.com/lonelyxmas/p/8360695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!