# **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. 實作環境說明**  ## **2. 設置複寫目錄權限** (於發行主機及訂閱主機) :::success ### **建立執行複寫時的帳號** **執行 "電腦管理" -> 使用者 -> 新增使用者**  本文以 SQLrepl 為例 <br> **於 "服務" 頁將 SQL Server Agent 內容中的登入設定為 SQLrepl 帳號啟動**   <br> **重新啟動服務**  ::: ## **3. 設置 SQL 複寫目錄權限** (於發行主機及訂閱主機) :::success 預設複寫集存放目錄為C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\repldata 設定複寫存放位置權限及開啟共享,設定SQLReplace帳號可以完全控制該目錄    ::: ## **4. 設置 SQL 複寫的散發者** (於發行主機) :::success 執行 SSMS 以 ServerName 登入 (不要使用IP) -> Replication -> Configure Distribution   <br> 以 URI 方式指定 Snapshot folder (不要使用磁碟目錄方式)   <br>      ::: ## **5. 設置 SQL 複寫相關權限** (於發行主機及訂閱主機) :::success 執行 SSMS -> Security -> Login -> New Login  <br> Login name : 指定 SQL Server Agent 啟動帳號 (SQLrepl)  <br> 移至 User Mapping -> 選擇發行DB、散發者DB、db_owner role、public role  ::: ## **6. 設置 SQL 複寫的發行者** :::success                ::: ## **7. 設置 SQL 複寫的訂閱者** :::success              ::: :::info [一. MSSQL 安裝](https://md.brmaker.info/ZVU_ns_FTaCzi2KIWR-Lwg) ::: ###### tags: `Database` `MSSQL`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up