教學課程:準備 SQL Server 進行複寫 (發行者、散發者、訂閱者)

適用於:SQL Server

在設定複寫拓撲之前,規劃安全性是很重要的步驟。 本教學課程說明如何更妥善地保護複寫拓撲。 同時說明如何設定散發,這是複寫資料的第一步。 您必須完成此教學課程,才能進行任何其他教學課程。

注意

若要在伺服器之間安全地複寫資料,必須實作複寫安全性最佳做法中的所有建議。

您將了解的內容

此教學課程會教導您如何準備伺服器,以便在最低權限下安全地執行複寫。

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

  • 建立用於複寫的 Windows 帳戶。
  • 準備快照集資料夾。
  • 設定散發。

必要條件

本教學課程是特別提供給熟悉基本資料庫作業但只稍微涉獵複寫作業的使用者。

若要完成本教學課程,您需要 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 固定伺服器角色的一員。 如需此角色的詳細資訊,請參閱伺服器層級角色

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

建立用於複寫的 Windows 帳戶

在這一節中,您會建立 Windows 帳戶,以執行複寫代理程式。 您會在本機伺服器上,另外為下列代理程式建立 Windows 帳戶:

代理程式 位置 帳戶名稱
快照集代理程式 Publisher <machine_name>\repl_snapshot
記錄讀取器代理程式 Publisher <machine_name>\repl_logreader
散發代理程式 發行者和訂閱者 <machine_name>\repl_distribution
合併代理程式 發行者和訂閱者 <machine_name>\repl_merge

注意

在複寫教學課程中,發行者和散發者會共用相同的 SQL Server 執行個體 (NODE1\SQL2016)。 訂閱者執行個體 (NODE2\SQL2016) 為遠端物件。 發行者和訂閱者可以共用相同的 SQL Server 執行個體,但這不是必要條件。 如果發行者和訂閱者共用相同的執行個體,則可略過在訂閱者上建立帳戶的步驟。

在發行者端建立複寫代理程式的本機 Windows 帳戶

  1. 在發行者端,從 [控制台] 中的 [系統管理工具] 開啟 [電腦管理]

  2. 在 [系統工具] 中,展開 [本機使用者和群組]

  3. 以滑鼠右鍵按一下 [使用者],然後選取 [新增使用者]。

  4. 在 [使用者名稱] 方塊中輸入 repl_snapshot,並提供密碼和其他相關資訊,然後選取 [建立],以建立 repl_snapshot 帳戶:

  5. 重複執行先前的步驟,以建立 repl_logreader、repl_distribution 和 repl_merge 帳戶:

    List of replication users

  6. 選取 [關閉]。

在訂閱者端建立複寫代理程式的本機 Windows 帳戶

  1. 在訂閱者端,從 [控制台] 中的 [系統管理工具] 開啟 [電腦管理]

  2. 在 [系統工具] 中,展開 [本機使用者和群組]

  3. 以滑鼠右鍵按一下 [使用者],然後選取 [新增使用者]。

  4. 在 [使用者名稱] 方塊中輸入 repl_distribution,並提供密碼和其他相關資訊,然後選取 [建立],以建立 repl_distribution 帳戶。

  5. 重複執行先前的步驟,以建立 repl_merge 帳戶。

  6. 選取 [關閉]。

如需詳細資訊,請參閱複寫代理程式概觀

準備快照集資料夾

在這一節中,您會設定用於建立及儲存發行集快照集的快照集資料夾。

建立快照集資料夾的共用並指定權限

  1. 在檔案總管中,瀏覽至 SQL Server 資料的資料夾。 預設位置是 C:\Program Files\Microsoft SQL Server\MSSQL.X\MSSQL\Data。

  2. 建立名為 repldata的新資料夾。

  3. 以滑鼠右鍵按一下此資料夾,然後選取 [屬性]

    a. 在 [repldata Properties] \(複寫資料內容) 對話方塊的 [共用] 索引標籤上,選取 [進階共用]

    b. 在 [進階共用] 對話方塊中,選取 [Share this Folder] \(共用此資料夾\),然後選取 [權限]。

    Selections for sharing the repldata folder

  4. 在 [Permissions for repldata] \(複寫資料權限) 對話方塊中選取 [新增]。 在 [選取使用者、電腦、服務帳戶或群組] 方塊中,輸入之前建立的快照集代理程式帳戶名稱,例如 <發行者機器名稱>\repl_snapshot。 選取 [檢查名稱],然後選取 [確定]。

    Selections to add sharing permissions

  5. 重複步驟 6,新增另外兩個之前建立的帳戶:<發行者機器名稱>\repl_merge 和 <發行者機器名稱>\repl_distribution

  6. 新增三個帳戶之後,指派下列權限:

    • repl_distribution:讀取
    • repl_merge:讀取
    • repl_snapshot:完整控制

    Shared permissions for each account

  7. 正確設定共用權限之後,選取 [確定] 關閉 [Permissions for repldata] \(複寫資料權限\) 對話方塊。 選取 [確定] 關閉 [進階設定] 對話方塊。

  8. 在 [repldata Properties] \(複寫資料內容\) 對話方塊中,依序選取 [安全性] 索引標籤和 [編輯]

  9. 在 [Permissions for repldata] \(複寫資料權限) 對話方塊中選取 [新增]。 在 [選取使用者、電腦、服務帳戶或群組] 方塊中,輸入之前建立的快照集代理程式帳戶名稱,例如 <發行者機器名稱>\repl_snapshot。 選取 [檢查名稱],然後選取 [確定]。

    Selections to add security permissions

  10. 重複上一個步驟,為散發代理程式 (例如 <發行者機器名稱>\repl_distribution) 及合併代理程式 (例如 <發行者機器名稱>\repl_merge) 新增權限。

  11. 確認允許下列權限:

    • repl_distribution:讀取
    • repl_merge:讀取
    • repl_snapshot:完整控制

    User permissions for replication data

  12. 再次選取 [共用] 索引標籤,並記下共用的網路路徑。 當您稍後設定快照集資料夾時,會需要此路徑。

    Network path on the

  13. 選取 [確定] 關閉 [repldata Properties] \(複寫資料內容) 對話方塊。

如需詳細資訊,請參閱保護快照集資料夾

設定散發

在這一節中,您會在發行者端設定散發,並在發行集和散發資料庫上設定所需權限。 如果您已經設定散發者,則必須停用發行和散發,再開始進行本節。 如果您必須保留現有的複寫拓撲,請勿執行上述動作,特別是在生產環境中。

利用遠端散發者來設定發行者已超出本教學課程的範圍。

在發行者端設定散發

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

  2. 以滑鼠右鍵按一下 [複寫] 資料夾,然後選取 [設定散發]

    注意

    • 如果您使用 localhost 而非實際的伺服器名稱連線到 SQL Server,系統會以警告提示您 SQL Server 無法連線到 localhost 或 IP 位址。 在警告對話方塊中選取 [確定]。 在 [連線到伺服器] 對話方塊中,將 [伺服器名稱]localhost 或 IP 位址變更為您的伺服器名稱。 然後選取 [連線]。
    • SQL Server Management Studio (SSMS) 18.0 (和更新版本) 目前已知有以下問題:當使用 IP 位址連線至散發者卻仍無效時,「不」顯示警告訊息。 連線至散發者時應使用實際的伺服器名稱。

    [散發設定精靈] 會隨即啟動。

  3. 在 [散發者] 頁面上,選取<「伺服器名稱」>將扮演本身的散發者;選取 SQL Server 則會建立散發資料庫和記錄。 然後選取 [下一步]。

    Option to make the server act as its own distributor

  4. 如果 SQL Server Agent 沒有執行,請在 SQL Server 的 [代理程式啟動] 頁面上選取 [是,將 SQL Server Agent 服務設為自動啟動]。 選取 [下一步]。

  5. 在 [快照集資料夾] 方塊中輸入路徑 \\<發行者機器名稱>\repldata,然後選取 [下一步]。 這個路徑應該符合您之前在設定共用內容之後,在複寫資料內容資料夾下的 [網路路徑] 中所見。

    Comparison of network paths in the

  6. 接受精靈其餘頁面上的預設值。

    Last page of the wizard

  7. 選取 [完成],以啟用散發。

設定散發者時,您可能會看到下列錯誤。 它指出啟動 SQL Server Agent 帳戶所用的帳戶不是系統管理員。 您需要手動啟動 SQL Server Agent,將這些權限授與現有的帳戶,或修改 SQL Server Agent 要使用的帳戶。

Error message for configuring the SQL Server Agent

如果您的 SQL Server Management Studio 執行個體是以系統管理權限執行,您就可以從 SSMS 手動啟動 SQL Agent:

Selecting

注意

如果沒看到 SQL Agent 啟動,請在 SSMS 中以滑鼠右鍵按一下 SQL Server Agent,然後選取 [重新整理]。 如果它仍處於停止狀態,請從 SQL Server 組態管理員以手動方式啟動它。

設定資料庫權限

  1. 在 SQL Server Management Studio 的 中,展開 [安全性],再於 [登入資料] 上按一下滑鼠右鍵,然後選取 [新增登入資料]:

  2. 在 [一般] 頁面中選取 [搜尋]。 在 [輸入物件名稱來選取] 方塊中輸入 <發行者機器名稱>\repl_snapshot,選取 [檢查名稱],然後選取 [確定]。

    Selections for entering the object name

  3. 在 [使用者對應] 頁面上,從 [已對應到此登入的使用者] 清單中選取 distributionAdventureWorks2022 這兩個資料庫。

    在 [資料庫角色成員資格] 清單中,選取 [db_owner] 角色以登入這兩個資料庫。

    Selecting the databases and their role

  4. 選取 [確定] 建立登入。

  5. 重複步驟 1-4 來建立其他本機帳戶 (repl_distribution、repl_logreader 和 repl_merge) 的登入。 這些登入也必須對應至 distributionAdventureWorks 資料庫中 db_owner 固定資料角色成員的使用者。

    View of all four accounts in Object Explorer

如需詳細資訊,請參閱

下一步

您的伺服器現已就緒可順利進行複寫。 下一篇文章會教導您如何設定異動複寫: