快照複製的工作機制

2021-05-12 16:16:02 字數 2452 閱讀 1631

預設情況下,所有三種複製都使用快照初始化訂閱伺服器。 sql server 快照**始終生成快照檔案,但傳遞檔案的**因使用的複製型別而異。 快照複製和事務複製使用分發**傳遞檔案,而合併複製使用 sql server 合併**。 快照**在分發伺服器上執行。 對於推送訂閱,分發**和合併**在分發伺服器上執行;對於請求訂閱,則在訂閱伺服器上執行。 有關推送訂閱和請求訂閱的詳細資訊,請參閱訂閱發布

。 有關**的詳細資訊,請參閱複製**概述

。可以在建立訂閱後立即生成和應用快照,也可以按照建立發布時制定的計畫進行。 快照**準備快照檔案(其中包含已發布表和資料庫物件的架構和資料),然後將這些檔案儲存在發布伺服器的快照資料夾中,並在分發伺服器上的分發資料庫中記錄跟蹤資訊。 配置分發伺服器時,可以指定乙個預設的快照資料夾,也可以為發布指定乙個備用位置,以替代預設位置或與之並存。 有關詳細資訊,請參閱備用快照資料夾位置

。注意:

除了本主題中描述的標準快照過程外,使用引數化篩選器的合併發布還使用乙個由兩部分組成的快照過程。 有關詳細資訊,請參閱帶有引數化篩選器的合併發布的快照

下圖顯示了快照複製的主要元件。

分發**和合併**

對於快照發布,分發**每次執行發布時,都會將乙個新快照移動到每個尚未同步但已標記為重新初始化或者包含新專案的訂閱伺服器中。

對於快照複製和事務複製,分發**執行以下操作:

與分發伺服器建立連線。

檢查分發伺服器上分發資料庫中的msrepl_commandsmsrepl_transactions表。 **從第乙個表中讀取快照檔案的位置,並從這兩個表中讀取訂閱伺服器同步命令。

將架構和命令應用於訂閱資料庫。

對於未篩選的合併複製發布,合併**將執行以下操作:

與發布伺服器建立連線。

檢查發布伺服器上的sysmergeschemachange表,確定是否存在應該應用於訂閱伺服器的新快照。

如果存在新快照,合併**則將sysmergeschemachange所指定位置處的快照檔案應用於訂閱資料庫。

快照**

對於合併複製,每次執行快照**時都會生成快照。 對於事務複製,是否生成快照取決於複製屬性immediate_sync的設定。 如果將該屬性設定為 true(使用新建發布嚮導時的預設值),則每次執行快照**時都會生成快照,而且可以隨時將快照應用於訂閱伺服器。 如果將該屬性設定為 false(使用sp_addpublication時的預設值),則只有在自上次快照**執行以來新增了新訂閱時才會生成快照;訂閱伺服器必須等待快照**完成才能進行同步。

快照**執行以下操作:

在分發伺服器到發布伺服器之間建立連線,然後根據需要在已發布表上使用鎖:

將每個專案的表架構副本寫入乙個 .sch 檔案。 如果發布其他資料庫物件(如索引、約束、儲存過程、檢視、使用者定義函式等),則生成其他指令碼檔案。

從發布伺服器上已發布的表中複製資料,然後將資料寫入快照資料夾。 快照將以一組大容量複製程式 (bcp) 檔案的形式生成。

對於快照發布和事務發布,快照**將向分發資料庫的msrepl_commands表和msrepl_transactions表中追加行。msrepl_commands表中包含的是命令,這些命令指示 .sch 和 .bcp 檔案、其他快照檔案以及對快照前或快照後指令碼的引用的位置。msrepl_transactions表中包含的是與同步訂閱伺服器相關的命令。

對於合併發布,快照**還執行其他操作。 有關詳細資訊,請參閱合併複製如何初始化發布和訂閱

。釋放已發布表上的所有鎖。

在快照生成過程中,不能對已發布表進行構架更改。 生成快照檔案後,可以使用 windows 資源管理器在快照資料夾中檢視這些快照檔案。

分發**和合併**

對於快照發布,分發**每次執行發布時,都會將乙個新快照移動到每個尚未同步但已標記為重新初始化或者包含新專案的訂閱伺服器中。

對於快照複製和事務複製,分發**執行以下操作:

與分發伺服器建立連線。

檢查分發伺服器上分發資料庫中的msrepl_commandsmsrepl_transactions表。 **從第乙個表中讀取快照檔案的位置,並從這兩個表中讀取訂閱伺服器同步命令。

將架構和命令應用於訂閱資料庫。

對於未篩選的合併複製發布,合併**將執行以下操作:

與發布伺服器建立連線。

檢查發布伺服器上的sysmergeschemachange表,確定是否存在應該應用於訂閱伺服器的新快照。

如果存在新快照,合併**則將sysmergeschemachange所指定位置處的快照檔案應用於訂閱資料庫。

事務複製工作機制

事務複製由 sql server 快照 日誌讀取器 和分發 實現。快照 準備快照檔案 其中包含了已發布表和資料庫物件的架構和資料 然後將這些檔案儲存在快照資料夾中,並在分發伺服器中的分發資料庫中記錄同步作業。日誌讀取器 監視為事務複製配置的每個資料庫的事務日誌,並將標記為要複製的事務從事務日誌複製到...

複製 Amazon EBS 快照

利用 amazon ebs,您可以建立卷的時間點快照,我們為您將其儲存在 amazon s3 中。在建立快照並且已完成到 amazon s3 的複製 快照狀態為completed時 後,您可將快照從乙個 aws 區域複製到另乙個區域,也可在相同區域內複製。amazon s3 伺服器端加密 256 位...

快照複製,事務複製,合併複製的區別

簡單來說 1.快照複製和事務複製是單向的 2005及以後的版本中加入了訂閱端可更新的事務複製 2.合併複製是雙向的。1.快照複製對錶結構沒有要求 2.事務複製要求表有主鍵 3.合併複製要求表有 rowguid 列 快照複製 1 概念 快照複製是完全按照資料和資料庫物件出現時的狀態來複製和分發它們的過...