共用方式為


教學課程:準備 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 開發人員版本

  • 下載 AdventureWorks 範例資料庫。 如需在 SSMS 中還原資料庫的指示,請參閱 使用 SSMS 還原資料庫備份。

注意

  • 在兩個以上的 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 帳戶:

    複寫使用者清單的螢幕快照。

  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. 以滑鼠右鍵按一下此資料夾,然後選取 [屬性]

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

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

    共用 repldata 資料夾之選取項目的螢幕快照。

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

    要新增共用許可權之選取項目的螢幕快照。

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

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

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

    每個帳戶共用許可權的螢幕快照。

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

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

    [安全性] 索引標籤上 [編輯] 按鈕的螢幕快照。

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

    要新增安全性許可權之選取項目的螢幕快照。

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

  11. 確認允許下列權限:

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

    復寫數據的用戶許可權螢幕快照。

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

    [共用] 索引標籤上網络路徑的螢幕快照。

  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位址的散發者時,不會顯示警告訊息,但仍無效。 連線至散發者時應使用實際的伺服器名稱。

    注意

    伺服器名稱可以指定為 <Hostname>,<PortNumber> 預設實例或 <Hostname>\<InstanceName>,<PortNumber> 具名實例。 使用自定義埠在Linux或 Windows 上部署 SQL Server,並停用瀏覽器服務時,請指定連線的埠號碼。 遠端散發者的自定義埠號碼使用適用於 SQL Server 2019 (15.x) 和更新版本。

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

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

    讓伺服器成為其本身散發者的選項螢幕快照。

  4. 如果 SQL Server Agent 未執行,請在 [SQL Server Agent 開始] 頁面上,選取 [是],設定 SQL Server Agent 服務以自動啟動。 選取 [下一步]。

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

    [repldata 屬性] 對話框中和 [設定散發精靈] 中網络路徑比較的螢幕快照。

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

    精靈最後一頁的螢幕快照。

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

設定散發者時,您可能會看到下列錯誤。 這表示用來啟動 SQL Server Agent 帳戶的帳戶不是系統上的系統管理員。 您必須手動啟動 SQL Server Agent、將這些許可權授與現有的帳戶,或修改 SQL Server Agent 所使用的帳戶。

設定 SQL Server Agent 的錯誤訊息螢幕快照。

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

在 SSMS 中,選取代理程式快捷方式功能表上 [開始] 的螢幕快照。

注意

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

設定資料庫權限

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

    快捷方式功能表上 [新增登入] 命令的螢幕快照。

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

    輸入物件名稱之選取項目的螢幕快照。

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

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

    選取資料庫及其角色的螢幕快照。

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

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

    物件總管 中所有四個帳戶的螢幕快照。

如需詳細資訊,請參閱 設定散發復寫代理程序安全性模型

後續步驟