教學課程:設定兩個完全連線的伺服器之間的複寫 (異動)

適用於:SQL Server

異動複寫是處理持續連線伺服器之間移動資料問題的良好解決方案。 您可以使用 [複寫精靈],輕鬆設定及管理複寫拓撲。

本教學課程會為您示範,如何為持續連線的伺服器設定異動複寫拓撲。 如需異動複寫如何運作的詳細資訊,請參閱異動複寫概觀

您將了解的內容

本教學課程會教您如何使用異動複寫,從一個資料庫將資料發行到另一個資料庫。

在本教學課程中,您將學會如何:

  • 透過異動複寫建立發行者。
  • 為交易式發行者建立訂閱者。
  • 驗證訂閱及測量延遲。

必要條件

本教學課程適合熟悉基本資料庫作業,但對複寫經驗有限的使用者。 開始進行本教學課程之前,您必須先完成教學課程:準備 SQL Server 進行複寫

若要完成本教學課程,您需要 SQL Server、SQL Server Management Studio (SSMS) 以及 AdventureWorks 資料庫:

  • 在發行者伺服器 (來源) 安裝:

    • SQL Server Express 或 SQL Server Compact 以外的任何 SQL Server 版本。 因為這兩種版本無法充任複寫發行者。
    • AdventureWorks2022 範例資料庫。 為了加強安全性,依預設,不會安裝範例資料庫。
  • 在訂閱者伺服器 (目的地) 安裝任何版本的 SQL Server (SQL Server Compact 除外)。 因為 SQL Server Compact 無法在異動複寫中擔任訂閱者。

  • 安裝 SQL Server Management Studio

  • 安裝 SQL Server 2017 Developer Edition

  • 下載 AdventureWorks 範例資料庫。 有關在 SSMS 中還原資料庫的指示,請參閱還原資料庫

注意

  • 相差兩個版本以上的 SQL Server 執行個體不支援複寫。 如需詳細資訊,請參閱 Supported SQL Server Versions in Replication Topology (複寫拓撲中支援的 SQL Server 版本)。
  • 在 SQL Server Management Studio 中,您用來與發行者和訂閱者連線的登入資料,必須是 sysadmin 固定伺服器角色的一員。 如需此角色的詳細資訊,請參閱伺服器層級角色

完成本教學課程的估計時間:60 分鐘

為異動複寫設定發行者

在本節中,您會使用 SQL Server Management Studio 建立交易式發行集,以發行 AdventureWorks2022 範例資料庫中 Product 資料表的篩選子集。 此外,您也會將散發代理程式所使用的 SQL Server 登入新增至發行集存取清單 (PAL)。

建立發行集並定義發行項

  1. 連線到 Microsoft SQL Server Management Studio 中的發行者,然後展開伺服器節點。

  2. 以滑鼠右鍵按一下 [SQL Server Agent],然後選取 [啟動]。 在建立發行集之前,您應該先執行 SQL Server Agent。 如果這樣無法啟動代理程式,您必須從 SQL Server 組態管理員以手動方式加以啟動。

  3. 展開 [複寫] 資料夾,然後以滑鼠右鍵按一下 [本機發行集] 資料夾,再選取 [新增發行集]。 此步驟會啟動新的發行集精靈:

    Selections for starting the New Publication Wizard

  4. 在 [發行集資料庫] 頁面上,選取 AdventureWorks2022,然後選取 [下一步]。

  5. 在 [發行集類型] 頁面上,選取 [交易式發行集],然後選取 [下一步]:

  6. 在 [發行項] 頁面中展開 [資料表] 節點,選取 [產品] 核取方塊。 然後展開 [產品] 並清除 [ListPrice] 和 [StandardCost] 旁的核取方塊。 選取 [下一步]。

  7. 在 [Filter Table Rows] \(篩選資料表資料列) 頁面上,選取 [新增]。

  8. 在 [新增篩選] 對話方塊中,選取 SafetyStockLevel 資料行。 選取向右箭號,將資料行新增至篩選查詢的篩選陳述式 WHERE 子句。 然後在 WHERE 子句修飾詞中手動鍵入以下內容:

    WHERE [SafetyStockLevel] < 500  
    

  9. 依序選取 [確定] 和 [下一步]。

  10. 選取 [立即建立快照集,並保留快照集為可使用狀態,以初始化訂閱] 核取方塊,然後選取 [下一步]

  11. 在 [代理程式安全性] 頁面上,清除 [Use the security settings from the Snapshot Agent] \(使用快照集代理程式的安全性設定\) 核取方塊。

    選取快照集代理程式的 [安全性設定]。 在 [處理帳戶] 方塊中輸入 <Publisher_Machine_Name>\repl_snapshot,提供此帳戶的密碼,然後選取 [確定]。

  12. 重複執行先前的步驟,將 <Publisher_Machine_Name>\repl_logreader設定為記錄讀取器代理程式的處理帳戶。 然後選取 [確定]。

  13. 在 [完成精靈] 頁面的 [發行集名稱] 方塊中鍵入 AdvWorksProductTrans,然後選取 [完成]:

  14. 建立發行集之後,選取 [關閉] 以完成精靈。

若您在嘗試建立發行集時 SQL Server Agent 未處於執行中狀態,則可能會遇到下列錯誤。 此錯誤表示您的發行集已成功建立,但快照集代理程式無法啟動。 如果發生這種情況,您需要啟動 SQL Server Agent,然後手動啟動快照集代理程式。 下一節會提供指示。

Warning that the Snapshot Agent has failed to start

檢視快照集產生的狀態

  1. 連線到 SQL Server Management Studio 中的發行者,展開伺服器節點,然後展開 [複寫] 資料夾。

  2. 在 [本機發行集] 資料夾中,以滑鼠右鍵按一下 [AdvWorksProductTrans],然後選取 [檢視快照集代理程式狀態]
    Command on the shortcut menu for viewing the Snapshot Agent status

  3. 發行集快照集代理程式作業的目前狀態會隨即顯示。 確認快照集作業已成功,再繼續進行下一節。

若您在建立發行集時 SQL Server Agent 未處於執行中狀態,則當您查看發行集快照集代理程式狀態時,會看到快照集代理程式從未執行。 如果是這種情況,請選取 [啟動] 來啟動快照集代理程式:

若您在此處看到錯誤,請參閱針對快照集代理程式錯誤進行疑難排解

將散發代理程式新增至 PAL

  1. 連線到 SQL Server Management Studio 中的發行者,展開伺服器節點,然後展開 [複寫] 資料夾。

  2. 在 [本機發行集] 資料夾中,以滑鼠右鍵按一下 [AdvWorksProductTrans],然後選取 [屬性]。 [發行集屬性] 對話方塊會隨即顯示。

    a. 選取 [發行集存取清單] 頁面,然後選取 [新增]
    b. 在 [新增發行集存取] 對話方塊中,選取 <Publisher_Machine_Name>\repl_distribution,然後選取 [確定]。

    Selections for adding a login to the publication access list

如需詳細資訊,請參閱複寫程式設計概念

建立交易式發行集的訂閱

在本節中,您會將訂閱者新增至先前建立的發行集。 本教學課程使用了遠端訂閱者 (NODE2\SQL2016),但您也可在本機將訂閱新增至發行者。

建立訂用帳戶

  1. 連線到 SQL Server Management Studio 中的發行者,展開伺服器節點,然後展開 [複寫] 資料夾。

  2. 在 [本機發行集] 資料夾中,以滑鼠右鍵按一下 AdvWorksProductTrans 發行集,然後選取 [新增訂閱]。 [新增訂閱精靈] 會隨即啟動:

    Selections to start the New Subscription Wizard

  3. 在 [發行集] 頁面上,選取 [AdvWorksProductTrans],然後選取 [下一步]:

  4. 在 [散發代理程式位置] 頁面上,選取 [Run all agents at the Distributor] \(在散發者端執行所有代理程式\),然後選取 [下一步]。 如須提取和推送訂閱的詳細資訊,請參閱訂閱發行集

  5. 在 [訂閱者] 頁面上,如未顯示訂閱者執行個體的名稱,請選取 [新增訂閱者],然後從下拉式清單選取 [新增 SQL Server 訂閱者]。 此步驟會開啟 [連線至伺服器] 對話方塊。 輸入訂閱者執行個體的名稱,然後選取 [連線]。

    在新增訂閱者後,選取您訂閱者執行個體名稱旁的核取方塊。 然後在 [訂閱資料庫] 下選取 [新增資料庫]。

  6. [新增資料庫] 對話方塊會隨即開啟。 在 [資料庫名稱] 方塊中輸入 ProductReplica,依序選取 [確定] 和 [下一步]

    Entering a name for the subscription database

  7. 在 [散發代理程式安全性] 頁面上,選取省略符號 (...) 按鈕。 在 [處理帳戶] 方塊中輸入 <Publisher_Machine_Name>\repl_distribution,輸入此帳戶的密碼,然後依序選取 [確定] 和 [下一步]。

    Distribution account information in the

  8. 選取 [完成] 接受其餘頁面的預設值,並完成精靈。

在訂閱者端設定資料庫權限

  1. 在 SQL Server Management Studio 中連線到訂閱者。 展開 [安全性] 並以滑鼠右鍵按一下 [登入],然後選取 [新增登入]

    a. 在 [一般] 頁面的 [登入名稱] 下,選取 [搜尋] 並新增 <Subscriber_Machine_Name>\repl_distribution 的登入。

    b. 在 [使用者對應] 頁面上,授與 ProductReplica 資料庫的登入 db_owner

    Selections for configuring the login on the subscriber

  2. 選取 [確定] 關閉 [新增登入] 對話方塊。

檢視訂閱的同步處理狀態

  1. 在 SQL Server Management Studio 中連線到發行者。 展開伺服器節點,並展開 [複寫] 資料夾。

  2. 在 [本機發行集] 資料夾中,展開 [AdvWorksProductTrans] 發行集,以滑鼠右鍵按一下 ProductReplica 資料庫中的訂閱,然後選取 [檢視同步處理狀態]。 目前的訂閱組織狀態會隨即顯示:

    Selections for opening the

  3. 若在 [AdvWorksProductTrans] 下看不到訂閱,請選取 F5 鍵重新整理清單。

如需詳細資訊,請參閱

測量複寫延遲

在本節中,您會使用追蹤 Token 來驗證複寫至訂閱者的變更,並判斷延遲。 延遲是發行者端做的變更出現在訂閱者端所花費的時間。

  1. 在 SQL Server Management Studio 中連線到發行者。 展開伺服器節點,再以滑鼠右鍵按一下 [複寫] 資料夾,然後選取 [啟動複寫監視器]:

  2. 在左窗格中展開發行者群組,展開發行者執行個體,然後選取 AdvWorksProductTrans 發行集。

    a. 選取 [追蹤 Token] 索引標籤。
    b. 選取 [插入追蹤]
    c. 在下列資料行中檢視追蹤 Token 的經過時間: [發行者到散發者][散發者到訂閱者][延遲總計]。 [Pending] \(暫止\) 值表示 Token 尚未到達指定點。

    Information for the tracer token

如需詳細資訊,請參閱

下一步

您已成功為您的異動複寫設定發行者和訂閱者。 您現在可以在發行者端的 Product 資料表插入、更新或刪除資料。 接著您可以查詢訂閱者端的 Product 資料表以檢視複寫的變更。

下一篇文章會教導您如何設定合併式複寫: