0

假設有一些數據庫:P,S1,S2,S3等如何處理這種複製情況?

PS1,S2和S3(訂閱者(發行者)具有一些表需要被複制(克隆和同步) )。這些表的副本將爲只讀。此外,該副本將被(通過外鍵)由內S1,S2,S3等

例如一些其它表中引用,

  • P具有表P.O1P.O2。 S1將具有S1.O1_copy,S1.O2_copyS1.OTHER,其中S1.OTHER引用S1.O1_copy。

根據您的經驗,您可以使用SQL Server Transactional Replication(據我所知,這是一個基於日誌的複製)用於此場景?或者我應該更好地使用trigger-based replication?雖然,我想觸發器可能需要在每次添加新訂戶(數據庫)時更新。

需要被複制的與P表是很少更新,但更新操作必須事務,以確保數據的一致性(從副本任何讀應該返回所請求的數據的最新快照) 。

謝謝:)

回答

1

您可以使用事務複製。我會提出的所有警告涉及初始化或重新初始化訂戶。當您添加一篇文章時,默認行爲是將該對象放到訂閱者處。如果您有使用外鍵指向複製表的表,該刪除將失敗。你當然可以解決這個問題,但這是需要注意的。

另一件事:我喜歡將訂閱的數據庫視爲只讀,因爲它減少了我的備份需求(即,如果數據庫發生某種情況,我創建一個新的並重新訂閱而不是恢復備份訂戶)。當您在訂閱者處儲存新穎的數據時,您不會有那麼奢侈的感覺。

+0

謝謝:)正如你所說,添加新文章後有一些方法可以避免快照重新初始化:[here](http://kevine323.blogspot.ro/2011/03/adding-table-article -to-transactional.html),[there](http://ansqldba.blogspot.ro/2012/02/adding-new-article-to-existing.html)等。我希望你不介意,我會喜歡在接受答案之前聽到其他一些意見。 –

相關問題