簡體   English   中英

事務復制或快照復制適合我的情況

[英]Transactional Replication or Snapshot Replication For My Situation

我目前正在為一家公司做一個項目,該公司有8個分支機構,每個分支機構都有自己的服務器。 他們讓我把數據庫合並成一個在總部使用。 也許我很愚蠢,但我能想出的唯一方法是將每個數據庫復制到總部。 那么HQ將有每個分支機構的8個數據庫。 問題是他們希望數據更改是實時的,所以我認為快照是行不通的。

所以我選擇了交易,這可行,但從我的測試來看,我嘗試先刪除總部數據庫中的一些記錄,然后從發布者/分支機構中刪除相同的記錄。 當它嘗試復制數據庫時出現此錯誤,

“當使用主鍵對表 '[dbo].[repl_tbl]' 應用復制的 DELETE 命令時,在訂閱服務器上找不到該行:[id] = 1(來源:MSSQLServer,錯誤號:20598)”

我發現的另一個問題是,如果我將主鍵為“15”的新數據添加到當前尚不存在的總部的分支數據庫中,然后我將主鍵為“15”的數據添加到分支/發布者數據庫,現在這導致錯誤

“違反 PRIMARY KEY 約束 'PK_repl_tbl'。無法在對象 'dbo.repl_tbl' 中插入重復鍵。重復鍵值為 (13)。(來源:MSSQLServer,錯誤號:2627)”

我希望總部的數據根據​​分支機構而改變。

任何建議都非常感謝。 提前致謝。

如果更改必須實時反映在每一方,並且要在發布者和訂閱者處進行,那么您可能需要查看合並復制,而不是事務或快照:

https://docs.microsoft.com/en-us/sql/relational-databases/replication/merge/merge-replication?view=sql-server-2017

合並復制有點復雜,如果發生任何問題,您不能簡單地在發布者處重新初始化訂閱,因為您將在訂閱者處丟失非同步數據,就像這個問題中描述的問題一樣 但從你的描述來看,這可能是一種方法。

但是,合並、快照或事務復制主要處理單獨的已發布表,然后是整個數據庫。 如果您需要在總部從分支機構提供完整的數據庫,那么您可能需要查看另一種稱為Always On Availability Groups 的技術 使用 AG,您可以輕松地為總部提供遠程數據庫,但它首先需要在分支機構和總部之間設置 Windows 故障轉移集群 AG 的一個限制是輔助副本數據庫是只讀的。 更改只能在主副本上完成。

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM