2008-10-11 25 views
1

我剛剛爲我的訂戶數據庫設置了自定義複製,如another post here中所述。基本上,當發佈者向訂閱者推送新記錄時,存儲過程還會將複製時間插入到表中的額外列中,並將新記錄插入到日誌表中。由自定義複製存儲過程插入時未複製記錄

嘗試將日誌表複製回主發佈數據庫時發生問題。這是我所做的:

  1. 在日誌表所在的數據庫中,我設置了一個新的事務複製,並將其設置爲創建快照。
  2. 創建發佈後,我創建一個新的推送訂閱,並將其設置爲立即初始化。
  3. 創建訂閱後,我檢查了同步狀態並確認快照已成功應用。

現在這裏是怪異的部分:如果我手動添加記錄到日誌表使用SQL Server Management Studio,記錄將被複制罰款。如果記錄是由自定義複製存儲過程添加的,則不會。該狀態將始終顯示「沒有複製交易可用」。

我不知道爲什麼發佈的行爲是這樣的:我真的不明白它是如何以不同方式處理自定義複製存儲過程插入的數據。

有人可以解釋我可能做了什麼錯嗎?

更新:幾個月前,我終於有了這個問題的答案,只是我從來沒有得到解決這個問題。我們必須向Microsoft致電支持電話,但我們得到了一個可行的解決方案。


答:要解決此問題,添加訂閱, 你需要運行該腳本像下面時:

sp_addsubscription @publication = 'TEST', ..., @loopback_detection = 'false' 

到解決方案的關鍵是上面所示的最後一個參數。默認情況下,生成的訂閱腳本將不具有此參數。

回答

1

幾個月前我終於有了這個問題的答案,只是我從來沒有得到解決這個問題。我們必須向Microsoft致電支持電話,但我們得到了一個可行的解決方案。

要解決此問題,添加訂閱時,您需要運行該腳本如下圖所示:

sp_addsubscription @publication = 'TEST', ..., @loopback_detection = 'false' 

到解決方案的關鍵是上面所示的最後一個參數:@loopback_detection =「假」 。默認情況下,生成的訂閱腳本將不具有此參數。

0

我認爲這是一個非常古老的問題,所以現在你可能已經解決了這個,但無論如何...

似乎你肯定描述的問題並沒有什麼意義。複製將通過複製觸發器進一步調用對源表的任何更改。在流程描述中看起來不正確的唯一一件事(儘管我可能會誤讀)​​是在推送訂閱之前創建快照。通常,您應該設置複製,推送訂閱,然後創建/推送快照。不要相信同步狀態,因爲它沒有檢查任何內容,只是說它沒有要複製的事務,它不知道表是同步的。

至於爲什麼你的手動插入工作,但不是自動化的,我會檢查和重新檢查你的工作,從根本上說,如果複製工作,那麼對這個表的任何改變將被複制,而不管源。

如果你早已解決了這個問題,我很樂意聽到這個決議。

編輯:

逾期想法:當您正在使用,然後大火觸發回覆制數據庫自定義PROC更新日期時間字段,你可能會導致死鎖複製的模型和插件之間的問題。這可能會導致失敗複製回來。如果沒有運行測試就很容易發現,但這是一種可能性。