Share via


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

本主題說明如何建立三節點的點對點交易式複寫拓樸,然後將節點新增至現有的拓樸。下列步驟提供了一個概觀;每個步驟在本主題中均有詳細描述:

  • 初始拓樸包括伺服器 A伺服器 B伺服器 C。在建立拓樸時,假設任何對等資料庫中未發生活動。若要建立拓樸:
    1. 伺服器 A伺服器 B伺服器 C 上設定散發。
      您可以使用本機或遠端「散發者」。如果您使用遠端「散發者」,建議您不要為所有節點使用相同的遠端「散發者」,因為這是潛在的單一失敗點。如需 「散發者」的詳細資訊,請參閱<設定散發>。
    2. 使用「新增發行集精靈」在伺服器 A 上建立發行集。
    3. 使用 [發行集屬性 - <Publication>] 對話方塊,為點對點複寫啟用發行集。
    4. 伺服器 B伺服器 C 上手動初始化結構描述和資料,或透過將伺服器 A 上的資料庫還原到伺服器 B伺服器 C 來初始化結構描述和資料。所有節點上的結構描述必須相同。
    5. 使用「設定點對點拓樸精靈」將伺服器 B伺服器 C 新增至拓樸。新增伺服器:在每個伺服器上建立發行集;並建立位於拓樸中其他伺服器上的發行集之訂閱。
      如果已發行資料表中有任何識別資料行,您必須為伺服器 B伺服器 C 上的資料表重設識別範圍的種子資料。
  • 建立拓樸後,伺服器 D 即已新增。在將節點新增至現有的拓樸時,假設正在發生活動,並且系統的停機時間必須縮至最短。若要將節點新增至現有的拓樸:
    1. 伺服器 D 上設定散發。
    2. 透過將伺服器 A 上的資料庫還原至伺服器 D,來初始化伺服器 D 上的結構描述和資料。
    3. 使用「設定點對點拓樸精靈」將伺服器 D 新增至拓樸。此時,新增伺服器 D:在伺服器 D 上建立發行集;並且在伺服器 A伺服器 D 之間建立訂閱。
      如果已發行資料表中有任何識別資料行,您必須為伺服器 D 上的資料表重設識別範圍的種子資料。
      此時,伺服器 D 可以將變更傳送至所有伺服器及從所有伺服器接收變更,但所有變更必須經由伺服器 A,該伺服器連接到伺服器 B伺服器 C。如果您要在伺服器 D 與其他節點間新增訂閱,請移至步驟 4。新增訂閱並非必需的,但它提供的容錯功能比僅在伺服器 A伺服器 D 之間使用單一連接更強。
    4. 停止拓樸,包括停止所有變更並同步處理所有伺服器。
    5. 使用「設定點對點拓樸精靈」在伺服器 D 與其他節點間新增訂閱。

建立點對點複寫拓樸

下列一系列程序說明了建立三節點的點對點拓樸之方法。

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

若要為每個節點設定散發

  1. 在 Microsoft 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. 按一下 [確定]。

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

  • 可以透過下列其中一種方法初始化對等:

    • 手動。使用 Integration Services (SSIS)、指令碼或其他方法將結構描述與資料從伺服器 A 複製到伺服器 B伺服器 C。在將這些伺服器設定為對等之前,確保伺服器 B伺服器 C 上的結構描述和資料與伺服器 A 上的相同。
    • 透過將伺服器 A 上的發行集資料庫備份還原至伺服器 B伺服器 C。如需備份與還原資料庫的詳細資訊,請參閱<在 SQL Server 中備份和還原資料庫>。
      ms152536.note(zh-tw,SQL.90).gif重要事項:
      在還原資料庫時,請勿指定 KEEP_REPLICATION 選項 (對於 Transact-SQL) 或 [保留複寫設定] 選項 (對於 SQL Server Management Studio)。複寫將在您執行「設定點對點拓樸精靈」時正確設定資料庫。
      備份包含了整個資料庫;因此每個對等資料庫在初始化以後將包含發行集資料庫的完整副本。備份包括:未指定為發行集和所有資料之發行項的資料表,即使在資料表中指定了資料列或資料行篩選。 在還原備份之後,管理員或應用程式有責任移除所有不想要的物件或資料。在隨後的同步處理期間,資料變更在其套用至指定為發行項的資料表時僅會被複寫。

若要在初始設定期間將節點新增至拓樸

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

  2. 在設定點對點拓樸精靈的 [發行集] 頁面上,您在 Server A 建立的發行集將會被選取。

  3. [對等] 頁面中新增伺服器 B,然後對於伺服器 C 重複此處理:

    1. 按一下 [加入 SQL Server]
    2. [連接到伺服器] 對話方塊中,連接到 Server B伺服器 B 現在便會顯示在 [對等伺服器執行個體] 資料行中。
    3. [對等 (Peer) 資料庫] 功能表中,選取 Server B 上的資料庫。
    ms152536.note(zh-tw,SQL.90).gif附註:
    Server A 也會顯示,但由於它已經設定完成,所以請勿選取 Server A 的核取方塊。
  4. [記錄讀取器代理程式安全性] 頁面中,為每個節點上的「記錄讀取器代理程式」指定認證。

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

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

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

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

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

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

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

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

將節點新增至現有的拓樸

下列系列「如何」程序按階段說明了將新節點新增至現有拓樸的方法:

  • 第一階段 (由前三個「如何」程序組成) 說明如何透過在伺服器 A伺服器 D 之間建立訂閱,以將伺服器 D 部份連接到拓樸。這將允許變更繼續在伺服器 A伺服器 B伺服器 C 上發生。只要在伺服器 A伺服器 D 之間建立訂閱,在伺服器 D 上的變更即會開始。
  • 第二階段 (由最後兩個「如何」程序組成) 說明如何透過在伺服器 B伺服器 D 之間,以及在伺服器 C伺服器 D 之間建立訂閱,以將伺服器 D 完整個連接到拓樸。對於此階段,您必須使系統停止執行。
    第二階段不是必需的,但它提供的容錯功能比僅在伺服器 A伺服器 D 之間使用單一連接更強。
ms152536.note(zh-tw,SQL.90).gif附註:
確保 SQL Server Agent 在每個節點上執行,並且「記錄讀取器代理程式」與「散發代理程式」在設定拓樸後執行。如需有關啟動 SQL Server Agent 的詳細資訊,請參閱<啟動 SQL Server Agent>;如需有關啟動複寫代理程式的詳細資訊,請參閱<如何:啟動和停止複寫代理程式 (SQL Server Management Studio)>。

若要為新節點設定散發

  • 請參閱上一節中的程序。

若要初始化新節點

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

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

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

  2. 在設定點對點拓樸精靈的 [發行集] 頁面上,您在 Server A 建立的發行集將會被選取。

  3. [對等] 頁面中,新增伺服器 D

    1. 按一下 [加入 SQL Server]
    2. 連接到 [連接到伺服器] 對話方塊中的伺服器 D伺服器 D 現在便會顯示在 [對等伺服器執行個體] 資料行中。
    3. [對等資料庫] 功能表中選取伺服器 D 上的資料庫。
    ms152536.note(zh-tw,SQL.90).gif附註:
    Server A 也會顯示,但由於它已經設定完成,所以請勿選取 Server A 的核取方塊。
  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 (Transact-SQL),並擷取輸出參數 @request_id
    2. 依預設,散發代理程式設定為連續執行,所以 Token 應該會自動傳送到所有的節點。如果散發代理程式並非以連續模式執行,請執行代理程式。如需詳細資訊,請參閱<Programming Replication Agent Executables>或<如何:啟動和停止複寫代理程式 (SQL Server Management Studio)>。
    3. 執行 sp_helppeerresponses (Transact-SQL),提供步驟 b 所擷取的 @request_id 值。等候所有的節點指出已經接收到對等 (Peer) 要求。
    4. 使用 DBCC CHECKIDENT 以重設伺服器 D 上每個資料表的種子資料,以確保使用適當的範圍。

若要停止拓樸

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

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

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

  4. 執行 sp_helppeerresponses (Transact-SQL),以提供在步驟 2 中擷取到的 @request_id 值。請等待直到所有節點均表示它們已收到對等請求。

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

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

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

  2. 在設定點對點拓樸精靈的 [發行集] 頁面上,您在 Server A 建立的發行集將會被選取。

  3. [對等] 頁面中新增伺服器 B,然後對於伺服器 C伺服器 D 重複此處理:

    1. 按一下 [加入 SQL Server]
    2. [連接到伺服器] 對話方塊中,連接到 Server B伺服器 B 現在便會顯示在 [對等伺服器執行個體] 資料行中。
    3. [對等 (Peer) 資料庫] 功能表中,選取 Server B 上的資料庫。
    ms152536.note(zh-tw,SQL.90).gif附註:
    Server A 也會顯示,但由於它已經設定完成,所以請勿選取 Server A 的核取方塊。
  4. [記錄讀取器代理程式安全性] 頁面中,為伺服器 B伺服器 C伺服器 D 上的「記錄讀取器代理程式」指定認證。

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

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

  7. 完成精靈。

請參閱

概念

點對點交易式複寫
複寫代理程式概觀

說明及資訊

取得 SQL Server 2005 協助