記錄一次Sqlserver數據庫訂閱與發佈過程中的報錯解決過程

記錄一次sqlserver訂閱與發佈過程中的報錯及解決過程

報錯:

20598報錯
20598報錯主要還是由於兩端數據庫數據不一致導致,數據庫在應用存儲過程時產生了報錯提示
記錄一次Sqlserver數據庫訂閱與發佈過程中的報錯解決過程

應用複製的命令時在訂閱服務器上找不到該行
錯誤消息
嘗試的命令:

if @@trancount > 0 rollback tran

事務序列號:

--0x0000FDAB0003A908008F00000000 命令 ID: 7

錯誤消息:

應用複製的命令時在訂閱服務器上找不到該行。 (源: MSSQLServer,錯誤號: 20598)

獲取幫助: http://help/20598

應用複製的命令時在訂閱服務器上找不到該行。 (源: MSSQLServer,錯誤號: 20598)

獲取幫助: http://help/20598


在發佈數據庫上執行以下語句查看錯誤事務的id

use distribution
go
exec sp_helpsubscriptionerrors 'SSDTCEMANTEST','ssdt','skl_11_8','ANCHNET','ssdt';

use distribution
go
select * from
dbo.MSarticles m
where exists (select mc.article_id from MSrepl_commands mc where mc.xact_seqno=0x00011F4000009D42006B00000000 AND mc.article_id = m.article_id )

EXEC Sp_browsereplcmds
@xact_seqno_start='0x00011F4000009D42006B00000000',
@xact_seqno_end='0x00011F4000009D42006B00000000'

根據實際情況判斷,要恢復數據還是跳過卡住的事務ID

---------------跳過訂閱機器上面的錯誤------------------------
-----------------------在分發機器上--------------------------
--語法
exec sp_helpsubscriptionerrors [ @publisher = ]'publisher'
, [ @publisher_db = ]'publisher_db' 
, [ @publication = ]'publication' 
, [ @subscriber = ]'subscriber' 
, [ @subscriber_db = ]'subscriber_db'

--get publisher subscriber
select*from MSsubscriber_info

--get publisher_db publication subscriber_db=publisher_db
select*from MSpublications

--example
exec sp_helpsubscriptionerrors 'SQLw2k8','dbtranpub','dbtranpub_pub','SQLw2k8Subscriber','dbtransub'

--獲取xact_seqno 值

----------------------在訂閱機器上---------------------------
sp_setsubscriptionxactseqno [ @publisher= ]'publisher', 
[ @publisher_db= ]'publisher_db', 
[ @publication= ]'publication', 
[ @xact_seqno= ] xact_seqno

--example(忽略)
exec sp_helpsubscriptionerrors 'SQLw2k8','dbtranpub','dbtranpub_pub',xact_seqno;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章