記錄一次sqlserver訂閱與發佈過程中的報錯及解決過程
報錯:
20598報錯
20598報錯主要還是由於兩端數據庫數據不一致導致,數據庫在應用存儲過程時產生了報錯提示
應用複製的命令時在訂閱服務器上找不到該行
錯誤消息
嘗試的命令: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;