如何:設定點對點交易式複寫 (SQL Server Management Studio)

本主題說明如何使用「設定點對點拓撲精靈」來設定及維護點對點複寫拓撲。本主題首先會示範如何使用這個精靈建立三個節點的拓撲,然後說明如何加入及移除節點,以及在節點之間加入及移除連接。在 SQL Server 2008 及更新版本的 SQL Server 中,可在系統中發生活動時,加入及連接節點。如果拓撲包括 SQL Server 2005 節點,您可以將新的節點連接到現有的節點,但是您必須停止系統,才能連接到一個以上的節點。停止系統包括停止所有節點上已發行資料表的活動,並確定每個節點已收到來自其他所有節點的所有變更。本主題的最後一節會詳細說明這個程序。

建立點對點複寫拓撲

下列步驟將提供如何建立具有三個節點之拓撲的概觀:伺服器 A伺服器 B伺服器 C。本章節將詳細說明每一個步驟。

  1. 確定 SQL Server Agent 正在每個節點上執行,並且「記錄讀取器代理程式」與「散發代理程式」在設定拓撲後執行。如需有關 SQL Server Agent 的詳細資訊,請參閱<啟動 SQL Server Agent>;如需有關如何啟動和停止代理程式的詳細資訊,請參閱<如何:啟動和停止複寫代理程式 (SQL Server Management Studio)>。

  2. 伺服器 A伺服器 B伺服器 C 上設定散發。

    您可以使用本機或遠端「散發者」。如果您使用遠端散發者,建議您不要為所有節點使用相同的遠端散發者,因為這是潛在的單一失敗點。如需有關散發者的詳細資訊,請參閱<複寫發行模型概觀>。

  3. 使用「新增發行集精靈」在伺服器 A 上建立發行集。

  4. 使用 [發行集屬性 - <Publication>] 對話方塊,為點對點複寫啟用發行集。

  5. 伺服器 B伺服器 C 上手動初始化結構描述和資料,或透過將伺服器 A 上的資料庫還原到伺服器 B伺服器 C 來初始化結構描述和資料。所有節點上的結構描述必須相同。

  6. 使用「設定點對點拓撲精靈」將伺服器 B伺服器 C 加入至拓撲。加入伺服器:在每個伺服器上建立發行集,並建立位於拓撲中其他伺服器上之發行集的訂閱。

    如果已發行資料表中有任何識別欄位,您必須為伺服器 B伺服器 C 上的資料表重設識別範圍的種子資料。

若要為每個節點設定散發

  1. 在 SQL Server Management Studio 中,連接到伺服器 A。必須對伺服器 B伺服器 C 重複此組態程序。

  2. 展開伺服器節點,以滑鼠右鍵按一下 [複寫] 資料夾,再按一下 [設定散發]

  3. 在「設定散發精靈」的 [散發者] 頁面中,選取「散發者」。

    若要使用本機「散發者」,請選取 ['<ServerName>' 將扮演本身的散發者; SQL Server 將建立散發資料庫和記錄]。若要使用遠端散發者,請選取 [使用下列伺服器做為散發者],然後選取伺服器。伺服器必須已設定為散發者,且必須先啟用發行者才能使用散發者。如需詳細資訊,請參閱<如何:在散發者端啟用遠端發行者 (SQL Server Management Studio)>。

    如果您選取遠端散發者,則必須在 [管理密碼] 頁面上輸入密碼,才能從伺服器 A 連接到散發者。此密碼必須與在遠端散發者端啟用伺服器 A 當做發行者時,所指定的密碼相符。

  4. [快照集資料夾] 頁面中,指定快照集資料夾。

    快照集資料夾只是您指定為共用位置的目錄。從這個資料夾讀取及寫入這個資料夾的代理程式,必須有足夠的權限才能存取它。這個目錄會將複寫所需的物件儲存到第一個節點上。此目錄不會由其他節點上的點對點複寫所使用,但仍需要用它來設定散發者。如需有關如何適當地設定資料夾安全性的詳細資訊,請參閱<保護快照集資料夾>。

  5. [散發資料庫] 頁面中,指定散發資料庫的名稱。

    散發資料庫可以儲存交易、中繼資料和記錄資料。

  6. [發行者] 頁面中,選擇性地啟用其他發行者,以便將伺服器 A 當做遠端散發者使用。

    如果啟用其他發行者,將伺服器 A 當做遠端散發者使用,您就必須在 [散發者密碼] 頁面中輸入密碼,以便在發行者與散發者之間建立連接。

  7. 在 [精靈動作] 頁面中,選擇性地編寫組態設定指令碼。如需詳細資訊,請參閱<編寫複寫指令碼>。

若要在第一個節點上建立發行集

  1. 在 SQL Server Management Studio 中,連接到伺服器 A,然後展開伺服器節點。

  2. 展開 [複寫] 資料夾,然後以滑鼠右鍵按一下 [本機發行集] 資料夾。

  3. 按一下 [新增發行集]

  4. 在「新增發行集精靈」的 [發行集資料庫] 頁面中,選取您要發行的資料庫。

  5. [發行集類型] 頁面中,選取 [交易式發行集]

  6. [發行項] 頁面上,選取您要發行的資料庫物件。

    按一下 [發行項屬性] 以檢視和修改發行項屬性。下列屬性不應變更:

    • 目的地物件名稱

    • 目的地物件擁有者

    • [<ACTION> 傳遞格式] 選項 (其中 ACTION 是 INSERT、INSERT 或 DELETE) 無法設定為 [<ACTION> 陳述式][沒有資料行清單的 <ACTION> 陳述式]

  7. 篩選不能在 [篩選資料表的資料列] 頁面中定義,因為不支援點對點發行集的篩選。

  8. [快照集代理程式] 頁面上,清除 [立即建立快照集]

  9. [代理程式安全性] 頁面中,為「快照集代理程式」和「記錄讀取器代理程式」指定認證。

    如需有關每個代理程式所需之權限的詳細資訊,請參閱<複寫代理程式安全性模型>和<複寫安全性最佳作法>。

  10. [精靈動作] 頁面上,選擇性地為發行集編寫指令碼。如需詳細資訊,請參閱<編寫複寫指令碼>。

  11. [完成精靈] 頁面上,指定發行集的名稱。整個拓撲中的發行集名稱都必須相同,因為「設定點對點拓撲精靈」在每個節點上建立發行集時,都要使用此名稱。

若要為點對點複寫啟用發行集

  1. 展開伺服器 A 上的 [複寫] 資料夾,然後展開 [本機發行集] 資料夾。

  2. 以滑鼠右鍵按一下您建立的發行集,然後按一下 [屬性]

  3. [發行集屬性 - <Publication>] 對話方塊的 [訂閱選項] 頁面中,為屬性 [允許點對點訂閱] 選取值 [True]

  4. 按一下 [確定]。

若要初始化每個節點上的結構描述和資料

  • 以下列其中一種方式初始化伺服器 B伺服器 C

    • 使用 Integration Services (SSIS)、指令碼或其他方法,手動將結構描述與資料從伺服器 A 複製到伺服器 B伺服器 C。在將這些伺服器設定為對等之前,請確定伺服器 B伺服器 C 上的結構描述和資料與伺服器 A 上的相同。

    • 在設定拓撲之前,每一個節點上都必須有初始資料。使用 SQL Server 備份和還原功能,在拓撲的每一個節點上初始化發行集的資料。備份應該來自設定的第一個節點,在此案例中也就是伺服器 A。在建立伺服器 A 上的發行集並啟用點對點複寫之後,必須進行備份。本主題假設在加入所有節點之前,未在任何新的節點上發生任何活動;因此,您可以使用相同的備份來初始化每一個節點。

      如果在加入所有節點之前,未在任何新的節點上發生活動,您必須在每一個節點加入而且至少與伺服器 A 同步處理一次之後,進行新的備份。如此可確保來自伺服器 A 的備份包含與所有其他節點有關的中繼資料。例如,如果您加入伺服器 B伺服器 C,而且這兩個節點上有活動:從伺服器 A 的備份初始化伺服器 B、設定及同步處理伺服器 B、從伺服器 A 進行新的備份、使用新的備份初始化伺服器 C,以及設定及同步處理節點伺服器 C

      如需有關如何備份及還原資料庫的詳細資訊,請參閱<在 SQL Server 中備份和還原資料庫>。

      重要事項重要事項

      在還原資料庫時,請勿指定 KEEP_REPLICATION 選項 (適用於 Transact-SQL) 或 [保留複寫設定] 選項 (適用於 SQL Server Management Studio)。複寫將在您執行「設定點對點拓撲精靈」時正確設定資料庫。

      備份包含了整個資料庫;因此,每個對等資料庫在初始化以後將包含發行集資料庫的完整複本。備份可能包含未指定為發行集之發行項的資料表。在還原備份之後,管理員或應用程式有責任移除所有不想要的物件或資料。在隨後的同步處理期間,資料變更在套用至指定為發行項的資料表時,僅會被複寫。

設定拓撲

  1. 伺服器 A 上建立的發行集上按一下滑鼠右鍵,然後按一下 [設定點對點拓撲]。您可能需要重新整理發行集節點,才能看到 [設定點對點拓撲] 選項。

  2. 在「設定點對點拓撲精靈」的 [發行集] 頁面上,您在伺服器 A 上建立的發行集將會被選取。

  3. [設定拓撲] 頁面中,加入伺服器 B,然後對伺服器 C 重複此處理:

    1. 以滑鼠右鍵按一下此頁面的設計介面,然後按一下 [加入新的對等節點]

    2. [連接到伺服器] 對話方塊中,連接到伺服器 B

    3. [加入新的對等節點] 對話方塊中,選取發行集資料庫,並選取 [連接到所有顯示的節點]。如果啟用了衝突偵測 (預設值),請在 [對等識別碼] 方塊中為每一個節點指定唯一值。拓撲中不能使用這個值。如需已經使用的識別碼清單,請查詢 Mspeer_originatorid_history 系統資料表。如需有關衝突偵測的詳細資訊,請參閱<點對點複寫中的衝突偵測>。

    4. 按一下 [確定]。 伺服器 B 現在會出現在設計介面中,並包含與伺服器 A 的連接。當加入伺服器 C 時,每一個節點都會連接到其他兩個節點。

  4. [記錄讀取器代理程式安全性] 頁面中,為每個節點上的「記錄讀取器代理程式」指定認證。

    如需有關「記錄讀取器代理程式」所需之權限的詳細資訊,請參閱<複寫代理程式安全性模型>和<複寫安全性最佳作法>。

  5. [散發代理程式安全性] 頁面中,為向每個節點的訂閱提供服務之「散發代理程式」指定認證。

    「設定點對點拓撲精靈」使用針對每個訂閱的獨立代理程式建立發送訂閱 (「散發代理程式」在「散發者」上執行)。在三節點的拓撲中,每個節點將擁有其他兩個節點的訂閱,因此將在每個「散發者」上執行兩個「散發代理程式」。

    如需有關「散發代理程式」所需之權限的詳細資訊,請參閱<複寫代理程式安全性模型>和<複寫安全性最佳作法>。

  6. [新的對等 (Peer) 初始化] 頁面上,選取 [我手動建立了對等資料庫,或者我還原了自從採取備份後,尚未變更之原始發行集資料庫的備份]

  7. 完成精靈。在 [正在建立點對點拓撲] 頁面中,可能會發出有關伺服器 A 已存在記錄讀取器或發行集的警告。這只是資訊性訊息,無需採取任何動作。

  8. 如果已發行的資料表中有任何識別欄位,則在還原作業後,您為伺服器 B 上的資料表所指派之識別範圍也將用於伺服器 B伺服器 C。您必須使用 DBCC CHECKIDENT 重設伺服器 B伺服器 C 上資料表的種子資料,以確定每一個都有使用不同的範圍。

    如需有關如何管理識別範圍的詳細資訊,請參閱<複寫識別欄位>中的「為手動識別範圍管理指派範圍」一節。

將執行 SQL Server 2008 或更新版本的節點加入現有的拓撲中

將執行 SQL Server 2008 或更新版本的節點加入現有拓撲的程序與將節點併入初始組態相同。若要將節點加入現有的拓撲,請遵循以下步驟:

  1. 伺服器 D 上設定散發。

  2. 透過將伺服器 A 上的資料庫還原至伺服器 D,來初始化伺服器 D 上的結構描述和資料。

  3. 使用「設定點對點拓撲精靈」將伺服器 D 加入至拓撲。

為新節點設定散發

  • 請參閱本主題稍早的「若要為每個節點設定散發」程序。

初始化新節點

  • 伺服器 D 上,從伺服器 A 還原發行集資料庫的最新備份。也可以使用伺服器 B伺服器 C 的備份,但該伺服器與資料庫必須在加入伺服器 D 時,於「設定點對點拓撲精靈」的 [發行集] 頁面上選取。

將節點加入至拓撲

  1. 伺服器 A 上建立的發行集上按一下滑鼠右鍵,然後按一下 [設定點對點拓撲]

  2. 在「設定點對點拓撲精靈」的 [發行集] 頁面上,您在伺服器 A 上建立的發行集將會被選取。

  3. [設定拓撲] 頁面中,您將在設計介面上看到伺服器 A伺服器 B伺服器 C

    1. 以滑鼠右鍵按一下設計介面,然後按一下 [加入新的對等節點]

    2. [連接到伺服器] 對話方塊中,連接到伺服器 D

    3. [加入新的對等節點] 對話方塊中,選取發行集資料庫。

    4. 如果您想要在所有的四個節點之間建立連接,請選取 [連接到所有顯示的節點]。如果您想要在某些節點之間手動加入連接,請確定此核取方塊已清除。

    5. 按一下 [確定]。

    6. 如果您已選取 [連接到所有顯示的節點],則每一個節點都將連接到其他三個節點。如果您清除此核取方塊,請手動加入連接:以滑鼠右鍵按一下節點,然後按一下 [加入新的對等連接],再將連接箭頭拖曳到另一個節點。針對您想要在伺服器 D 與其他節點之間建立的每一個連接重複此程序。

  4. 完成「設定點對點拓撲精靈」,如同本主題稍早的「設定拓撲」程序所述。

從拓撲中移除節點

從拓撲中移除節點

  1. 在「設定點對點拓撲精靈」的 [設定拓撲] 頁面上,以滑鼠右鍵按一下節點,然後按一下 [刪除對等節點]

  2. 完成「設定點對點拓撲精靈」,如同本主題稍早的「設定拓撲」程序所述。

移除兩個節點之間的連接

在拓撲中移除節點之間的連接

  1. 在「設定點對點拓撲精靈」的 [設定拓撲] 頁面上,以滑鼠右鍵按一下節點或設計介面,然後按一下 [移除對等連接]

  2. 完成「設定點對點拓撲精靈」,如同本主題稍早的「設定拓撲」程序所述。

隱藏拓撲中的節點

如果拓撲有太多節點,則隱藏其中一個或多個節點可能會很有用處。請注意,您只能在設計介面上顯示的節點之間加入連接。

隱藏拓撲中的節點

  1. 在「設定點對點拓撲精靈」的 [設定拓撲] 頁面上,以滑鼠右鍵按一下節點,然後按一下 [選取要檢視的節點]

  2. [加入/移除對等項] 對話方塊中,選取要從設計介面加入或移除的節點。

  3. 按一下 [確定]。

將 SQL Server 2005 節點加入至現有的拓撲

如同本主題的介紹內容中所註明,加入 SQL Server 2005 節點與加入執行更新版 SQL Server 之節點之間的主要差異,就是 SQL Server 2005 需要您停止系統,才能將新的節點連接到所有現有的節點。下列一系列的程序將示範如何將 SQL Server 2005 節點加入至各階段的現有拓撲:

  • 第一階段說明如何透過在伺服器 A伺服器 D 之間建立訂閱,以便將伺服器 D 部分連接到拓撲。這將允許變更繼續在伺服器 A伺服器 B伺服器 C 上發生。只要在伺服器 A伺服器 D 之間建立訂閱,在伺服器 D 上的變更即會開始。來自伺服器 B伺服器 C 的變更會透過伺服器 A 複寫到伺服器 D

  • 第二階段說明如何透過在伺服器 B伺服器 D 之間,以及在伺服器 C伺服器 D 之間建立訂閱,以便將伺服器 D 完整連接到拓撲。在此階段中,您必須停止系統。

    第二階段不是必需的,但它提供的容錯功能比僅在伺服器 A伺服器 D 之間使用單一連接更強。

第一階段程序

為新節點設定散發

  • 請參閱本主題稍早的「若要為每個節點設定散發」程序。

初始化新節點

  • 伺服器 D 上,從伺服器 A 還原發行集資料庫的最新備份。也可以使用伺服器 B伺服器 C 的備份,但該伺服器與資料庫必須在加入伺服器 D 時,於「設定點對點拓撲精靈」的 [發行集] 頁面上選取。

若要將新節點新增至拓撲 (在伺服器 A 與伺服器 D 之間建立訂閱)

  1. 伺服器 A 上建立的發行集上按一下滑鼠右鍵,然後按一下 [設定點對點拓撲]

  2. 在「設定點對點拓撲精靈」的 [發行集] 頁面上,您在伺服器 A 上建立的發行集將會被選取。

  3. [設定拓撲] 頁面中,您將在設計介面上看到伺服器 A伺服器 B伺服器 C

    1. 以滑鼠右鍵按一下設計介面,然後按一下 [加入新的對等節點]

    2. [連接到伺服器] 對話方塊中,連接到伺服器 D

    3. [加入新的對等節點] 對話方塊中,選取發行集資料庫。

    4. 按一下 [確定]。

    5. 伺服器 A伺服器 D 之間加入連接:以滑鼠右鍵按一下伺服器 A,然後按一下 [加入新的對等連接],再將連接箭頭拖曳到伺服器 D

  4. [記錄讀取器代理程式安全性] 頁面中,為伺服器 D 上的「記錄讀取器代理程式」指定認證。

  5. [散發代理程式安全性] 頁面中,為伺服器 A伺服器 D 上的「散發代理程式」指定認證。

  6. [新的對等初始化] 頁面中,選取 [我還原了原始發行集資料庫的備份,但備份之後發行集資料庫曾經被變更]

    如果您選取此選項,則任何未包括在伺服器 A 備份中的變更都將傳遞至伺服器 D 上還原的資料庫。當您為點對點複寫啟用發行集時,allow_initialize_from_backup 發行集屬性設定為 True。複寫則立即開始追蹤伺服器 A 上發行集資料庫中所做的變更,因此其他對等可在還原後更新。

  7. 按一下 [瀏覽] 按鈕以瀏覽至所使用的備份,且複寫將從備份讀取記錄序號 (LSN)。伺服器 A 上發行集資料庫中所有具有較高 LSN 的變更,都將傳遞至伺服器 D

  8. 完成精靈。

  9. 如果是包含識別範圍的任何已發行資料表,您為伺服器 A 上每個資料表指派的識別範圍也將在伺服器 D 上使用。如果您不停止系統及完整連接所有節點,請使用下列程序為伺服器 D 上的每個資料表指派適當的範圍。如果您要完整連接所有節點,則可以在完成停止處理後指派範圍。

    1. 伺服器 D 上執行 sp_requestpeerresponse,並擷取輸出參數 @request_id

    2. 依預設,散發代理程式設定為連續執行;因此 Token 應該會自動傳送到所有的節點。如果散發代理程式並非以連續模式執行,請執行代理程式。如需詳細資訊,請參閱<複寫代理程式可執行檔概念>或<如何:啟動和停止複寫代理程式 (SQL Server Management Studio)>。

    3. 執行 sp_helppeerresponses,提供步驟 b 中所擷取的 @request_id 值,等候所有的節點指出已經接收到對等要求。

    4. 使用 DBCC CHECKIDENT 以重設伺服器 D 上每個資料表的種子資料,以確保使用適當的範圍。

第二階段程序

若要停止拓撲

  1. 停止點對點拓撲中所有已發行資料表上的所有活動。

  2. 伺服器 A伺服器 B伺服器 C伺服器 D 上的資料庫中執行 sp_requestpeerresponse,並擷取輸出參數 @request_id

  3. 依預設,散發代理程式設定為連續執行;因此 Token 應該會自動傳送到所有的節點。如果散發代理程式並非以連續模式執行,請執行代理程式。如需詳細資訊,請參閱<複寫代理程式可執行檔概念>或<如何:啟動和停止複寫代理程式 (SQL Server Management Studio)>。

  4. 執行 sp_helppeerresponses,提供步驟 2 中所擷取的 @request_id 值。請稍候,直到所有節點都指示已經收到對等要求為止。

  5. 必要時,請指派新的識別範圍。您現在可以透過新增剩餘訂閱來完整連接拓撲。

若要為新節點建立額外的訂閱

  1. 伺服器 A 上建立的發行集上按一下滑鼠右鍵,然後按一下 [設定點對點拓撲]

  2. 在「設定點對點拓撲精靈」的 [發行集] 頁面上,您在伺服器 A 上建立的發行集將會被選取。

  3. [設定拓撲] 頁面中,您將在設計介面上看到伺服器 A伺服器 B伺服器 C伺服器 D

    1. 以滑鼠右鍵按一下伺服器 B,然後按一下 [加入新的對等連接],再將連接箭頭拖曳到伺服器 D

    2. 以滑鼠右鍵按一下伺服器 C,然後按一下 [加入新的對等連接],再將連接箭頭拖曳到伺服器 D

  4. [記錄讀取器代理程式安全性] 頁面中,為伺服器 B伺服器 C伺服器 D 上的「記錄讀取器代理程式」指定認證。

  5. [散發代理程式安全性] 頁面中,為伺服器 A伺服器 B伺服器 C伺服器 D 上的「散發代理程式」指定認證。

  6. [新的對等 (Peer) 初始化] 頁面上,選取 [我手動建立了對等資料庫,或者我還原了自從採取備份後,尚未變更之原始發行集資料庫的備份]。所有節點已經擁有資料;指定此選項可確保在各節點間建立正確的訂閱關係。

  7. 完成精靈,然後重新啟動系統上的活動。