天天看點

sql server 資料庫複制實作資料同步常見問題(不定期更新)

sql server2008資料庫複制實作資料同步常見問題

在原作者基礎上追加 sql server2008資料庫複制實作資料同步常見問題

23.釋出 'xx' 的并發快照不可用,因為該快照尚未完全生成,或者日志讀取器代理未運作,無法激活它。如果并發快照的生成過程中斷,則必須重新啟動用于該釋出的快照代理,直到生成完整的快照。

  1. 删除相關的釋出訂閱
  2. 執行下列查詢,如果還是存在'xx'相關的行
select * from msdb..MSdistpublishers
select * from distribution..MSpublisher_databases
select * from distribution..MSpublications
select * from distribution..MSarticles
select * from distribution..MSsubscriptions
           
  1. 删掉所有與'xx'先關的行(記得先備份表)
delete from distribution..MSarticles where publisher_db = '<NameOfDatabase>'
delete from distribution..MSsubscriptions where publisher_db = '<NameOfDatabase>'
           
  1. 重建分發

參考 stackoverflow

如果沒有像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'

           

執行之後,重新關閉和啟動該分發代理作業,很快,複制正常了!~

為了避免過期導緻的問題,有兩種方法設定:
  1. 禁用這幾個清除的作業;
  2. 設定更長的保存期限。

26 添加新的分發表

1. 分發項-->右鍵屬性-->項目-->勾選顯示所有熟悉-->勾選分發表
2. 啟動複制螢幕-->選中分發項-->代理-->啟動代理(等待代理完成,訂閱會自動同步新的快照含新添加的項,期間耐心等待,可 F5 檢視進度)
           

27 日志讀取代理器未運作, 無法啟動