# **MSSQL 複寫管理** :::info [參考資料](https://docs.microsoft.com/zh-tw/previous-versions/sql/sql-server-2008/ms151198(v=sql.100)) <br> 1. SQL Server 複寫是一組技術,用於將資料和資料庫物件從某個資料庫複製和散發到另一個資料庫,然後在兩個資料庫之間進行同步處理以維護一致性。 <br> 2. 複寫分為兩大類別 : * 在伺服器之間複寫資料通常可支援延展性和可用性的提升、資料倉儲和報表,以及整合多個站台的資料。 * 在伺服器與用戶端之間複寫資料通常可支援與行動使用者交換資料、消費者銷售點 (POS) 應用程式,以及整合多個站台的資料。 <br> 3. 複寫使用出版業比喻來表示複寫拓撲中的元件,包括「發行者」、「散發者」、「訂閱者」、發行集、發行項和訂閱。 * 「發行者」是一個可透過複寫使資料可用於其他位置的資料庫執行個體。發行者可以有一或多個發行集,每個發行集各定義一組邏輯相關的物件及要複寫的資料。 * 「散發者」是一個作為儲存器的資料庫執行個體,用於儲存與一或多個「發行者」相關聯的複寫特定資料。每個發行者都會關聯於散發者端的單一資料庫 (稱為散發資料庫)。散發資料庫儲存複寫狀態資料和有關發行集的中繼資料,有時它還作為從「發行者」移動至「訂閱者」之資料的佇列。在許多情況下,單一資料庫伺服器執行個體可同時作為「發行者」和「散發者」,稱之為「本機散發者」。當在單獨的資料庫伺服器執行個體上設定「發行者」與「散發者」時,「散發者」稱為「遠端散發者」。 * 「訂閱者」是接收已複寫資料的資料庫執行個體。訂閱者可以接收多個發行者和發行集的資料。依所選的複寫類型而定,訂閱者也可以將資料變更傳回發行者,或將資料重新發行到其他訂閱者。 <br> 4. 複寫類型有三種:交易式複寫、合併式複寫和快照式複寫。這些所有類型都仰賴許多名為代理程式的獨立程式,以便執行與追蹤變更和散發資料有關的工作。 ::: :::warning ::: ## **1. 實作環境說明** ![](https://md.brmaker.info/uploads/upload_63d0e471f475a16aafcfb7cc5a1f706c.png) ## **2. 設置複寫目錄權限** (於發行主機及訂閱主機) :::success ### **建立執行複寫時的帳號** **執行 "電腦管理" -> 使用者 -> 新增使用者** ![](https://md.brmaker.info/uploads/upload_da3f7acea49a1b0bd396e4cbcf1dff84.png) 本文以 SQLrepl 為例 <br> **於 "服務" 頁將 SQL Server Agent 內容中的登入設定為 SQLrepl 帳號啟動** ![](https://md.brmaker.info/uploads/upload_94c0c78c655189551e2b4c7e27fca374.png) ![](https://md.brmaker.info/uploads/upload_a3b427d95179a4a3fb952b3f1337d97d.png) <br> **重新啟動服務** ![](https://md.brmaker.info/uploads/upload_712cee005f6e2c5ec3a80ef023ed64db.png) ::: ## **3. 設置 SQL 複寫目錄權限** (於發行主機及訂閱主機) :::success 預設複寫集存放目錄為C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\repldata 設定複寫存放位置權限及開啟共享,設定SQLReplace帳號可以完全控制該目錄 ![](https://i.imgur.com/N674k6y.png) ![](https://i.imgur.com/W857Z1s.png) ![](https://i.imgur.com/YLiZvEe.png) ::: ## **4. 設置 SQL 複寫的散發者** (於發行主機) :::success 執行 SSMS 以 ServerName 登入 (不要使用IP) -> Replication -> Configure Distribution ![](https://md.brmaker.info/uploads/upload_1678617be38fc94c1320f09e00f67efe.png) ![](https://md.brmaker.info/uploads/upload_7a85555b5187755886cbde74fdd95561.png) <br> 以 URI 方式指定 Snapshot folder (不要使用磁碟目錄方式) ![](https://md.brmaker.info/uploads/upload_b1f2ba74709dd0e7cacb7e0c0325c8f3.png) ![](https://md.brmaker.info/uploads/upload_22bf6ceb91b9afbf72ef3ab945a25468.png) <br> ![](https://md.brmaker.info/uploads/upload_41346fae1cb3ee97906c7b325e69da1b.png) ![](https://md.brmaker.info/uploads/upload_331ac5928a2e51154443b8948682823f.png) ![](https://md.brmaker.info/uploads/upload_e1bba4d763a7b6a21a697c9164ccabdb.png) ![](https://md.brmaker.info/uploads/upload_f81747bd473c363e6905d4aa4b21e265.png) ![](https://md.brmaker.info/uploads/upload_12df064df6472059f166a099f5e6f6d3.png) ::: ## **5. 設置 SQL 複寫相關權限** (於發行主機及訂閱主機) :::success 執行 SSMS -> Security -> Login -> New Login ![](https://md.brmaker.info/uploads/upload_664b6cdd9174e3524fae70c348f51829.png) <br> Login name : 指定 SQL Server Agent 啟動帳號 (SQLrepl) ![](https://md.brmaker.info/uploads/upload_9af26590af56e6b17c77097135904cd6.png) <br> 移至 User Mapping -> 選擇發行DB、散發者DB、db_owner role、public role ![](https://md.brmaker.info/uploads/upload_5b3df9b39f41f13dfa18c1e6281ad37a.png) ::: ## **6. 設置 SQL 複寫的發行者** :::success ![](https://md.brmaker.info/uploads/upload_23c9924c08973a1b7eec8e546eb03e9a.png) ![](https://md.brmaker.info/uploads/upload_82fc17667006faeff8c2806b186c2351.png) ![](https://md.brmaker.info/uploads/upload_7d942cf34bbbd593a8caeade7ab89627.png) ![](https://md.brmaker.info/uploads/upload_81407f359554e89fe7073f4d31a5da86.png) ![](https://md.brmaker.info/uploads/upload_ea001bc63a3834c61cc016798c5601d4.png) ![](https://md.brmaker.info/uploads/upload_fa1094e430e836ce23824d946884e6a1.png) ![](https://md.brmaker.info/uploads/upload_155dc973ed42cb6ed0a67dd6e6e1e134.png) ![](https://md.brmaker.info/uploads/upload_9e7edd198388919e63fc69797846e4b9.png) ![](https://md.brmaker.info/uploads/upload_2a3d794ef10b1044c6b650bca6411a4a.png) ![](https://md.brmaker.info/uploads/upload_52c904966830f6834c4cfe2cdb017d94.png) ![](https://md.brmaker.info/uploads/upload_17ce8331ff36669d00ed0e0ef36b2307.png) ![](https://md.brmaker.info/uploads/upload_18eec84ac8bc5b8d1c2fc781de468b07.png) ![](https://md.brmaker.info/uploads/upload_c7df5fef6a741a8ca38fb53ffb57d829.png) ![](https://md.brmaker.info/uploads/upload_df8aabe752f43fe3e504520a08aa14c8.png) ![](https://md.brmaker.info/uploads/upload_c72bc797552690d010fb634743230c97.png) ::: ## **7. 設置 SQL 複寫的訂閱者** :::success ![](https://md.brmaker.info/uploads/upload_09a35734663a450f16796c0b74243e8c.png) ![](https://md.brmaker.info/uploads/upload_063ed659c538de575ae5ff8711d85b12.png) ![](https://md.brmaker.info/uploads/upload_c8e233cfff6bd921a4fc4cdc732e3bad.png) ![](https://md.brmaker.info/uploads/upload_8bac38dfc729e7fb51c5c8969ecc70f2.png) ![](https://md.brmaker.info/uploads/upload_f86616c7468af8709b2ddf7e7072f204.png) ![](https://md.brmaker.info/uploads/upload_988234bcdd92ced22d8836ac10f75d53.png) ![](https://md.brmaker.info/uploads/upload_a0d97c8b3dd6d33ba390030795273559.png) ![](https://md.brmaker.info/uploads/upload_3773ac0c348a28863eff007b2b4b9fb8.png) ![](https://md.brmaker.info/uploads/upload_6ffdc2235daec47e8b4e21d9ef770f7e.png) ![](https://md.brmaker.info/uploads/upload_2c16478f810abefe29e7d6ca90d3dcbf.png) ![](https://md.brmaker.info/uploads/upload_53db8ad531a665795707e7c3597a9d2d.png) ![](https://md.brmaker.info/uploads/upload_359f2d23933d7ecf5f33d44abc992d07.png) ![](https://md.brmaker.info/uploads/upload_a47725d97402c236752fbe06e6404579.png) ::: :::info [一. MSSQL 安裝](https://md.brmaker.info/ZVU_ns_FTaCzi2KIWR-Lwg) ::: ###### tags: `Database` `MSSQL`