sql server2008數據庫復制實現數據同步常見問題
在原作者基礎上追加 sql server2008數據庫復制實現數據同步常見問題
23.發布 'xx' 的並發快照不可用,因為該快照尚未完全生成,或者日志讀取器代理未運行,無法激活它。如果並發快照的生成過程中斷,則必須重新啟動用於該發布的快照代理,直到生成完整的快照。
- 刪除相關的發布訂閱
- 執行下列查詢,如果還是存在'xx'相關的行
select * from msdb..MSdistpublishers
select * from distribution..MSpublisher_databases
select * from distribution..MSpublications
select * from distribution..MSarticles
select * from distribution..MSsubscriptions
- 刪掉所有與'xx'先關的行(記得先備份表)
delete from distribution..MSarticles where publisher_db = '<NameOfDatabase>'
delete from distribution..MSsubscriptions where publisher_db = '<NameOfDatabase>'
- 重建分發
如果沒有像22那樣修改過密碼,就是刪除分發復制時由於某些原因沒刪干凈(上邊的那些表)
經測試,刪除發布、訂閱時MSsubscriptions表中的數據會自動被刪掉,
如果還存在之前的‘xx’那就是未刪除干凈
24. 錯誤號 MSSQL_REPL20011 錯誤號:15517
進程無法在“WIN-XXX”上執行“sp_replcmds”。 (源: MSSQL_REPL,錯誤號 MSSQL_REPL20011)
獲取幫助: http://help/MSSQL_REPL20011
無法作為數據庫主體執行,因為主體 "dbo 不存在、無法模擬這種類型的主體,或您沒有所需的權限。 (源 MSSQLServer,錯誤號: 15517)
獲取幫助: http://help/15517
進程無法在“WIN-XXX”上執行“sp_replcmds”。 (源: MSSQL_REPL,錯誤號 MSSQL_REPL22037)
獲取幫助: http://help/MSSQL_REPL22037
- 權限不夠,解決方法
ALTER AUTHORIZATION ON DATABASE::[數據庫名] TO [sa]
ALTER AUTHORIZATION ON DATABASE::[數據庫名] TO [分發賬戶]
USE 數據庫名
GO
sp_changedbowner '分發賬戶'
25 錯誤信息:已將此(這些)訂閱標記為不活動,必須將其重新初始化。需要刪除 NoSync 訂閱,然后重新創建它們
解決方法:
更改分發庫中的一個表 MSsubscriptions 的狀態字段(0 = 不活動;1 = 已訂閱;2 = 活動),訂閱中的每個已發布項目在MSsubscriptions表中占一行。
update sub set status = 2
from distribution.dbo.MSsubscriptions sub
where status<>2 and publication_id='publicationID'
執行之后,重新關閉和啟動該分發代理作業,很快,復制正常了!~
為了避免過期導致的問題,有兩種方法設置:
- 禁用這幾個清除的作業;
- 設置更長的保質期。
26 添加新的分發表
1. 分發項-->右鍵屬性-->項目-->勾選顯示所有熟悉-->勾選分發表
2. 啟動復制監視器-->選中分發項-->代理-->啟動代理(等待代理完成,訂閱會自動同步新的快照含新添加的項,期間耐心等待,可 F5 查看進度)