sql server2008數據庫複製實現數據同步常見問題
在原做者基礎上追加 sql server2008數據庫複製實現數據同步常見問題html
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>'
- 重建分發
參考 stackoverflowsql
若是沒有像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'
執行以後,從新關閉和啓動該分發代理做業,很快,複製正常了!~spa
爲了不過時致使的問題,有兩種方法設置:代理
- 禁用這幾個清除的做業;
- 設置更長的保質期。
26 添加新的分發表
1. 分發項-->右鍵屬性-->項目-->勾選顯示全部熟悉-->勾選分發表 2. 啓動複製監視器-->選中分發項-->代理-->啓動代理(等待代理完成,訂閱會自動同步新的快照含新添加的項,期間耐心等待,可 F5 查看進度)