的問題是,用戶之一有被複制,在系統表老的發佈和訂閱貫穿整個系統。這導致違反了UNIQUE KEY約束。
一旦我們刪除了這些舊條目,我們就可以重新啓動複製。
我們能夠識別sysmergepublication中的有效記錄,因爲我們在複製無效條目之前知道該表的狀態。如果您需要,此forum post會向您顯示如何定位無效的出版物。
我們使用的後續SQL檢查其他訂閱條目:
select *
from sysmergepublications
select *
from sysmergesubscriptions
where pubid in (select pubid from sysmergepublications)
select *
from sysmergesubscriptions
where pubid not in (select pubid from sysmergepublications)
這裏是我們用來刪除無效預訂的SQL:
delete from sysmergesubscriptions
where pubid not in (select pubid from sysmergepublications)
注:該代碼示例上述假設sysmergepublication僅包含有效的出版物
或者:您可以使用EXEC sp_removedbreplication @dbname='<dbname>'
完全刪除數據庫的複製。該命令似乎刪除數據庫中的所有複製觸發器。
來源
2009-09-11 19:05:53
Dug