mssql 分發與複製

2021-09-30 08:17:59 字數 3790 閱讀 9879

接下來就可以用sql server企業管理器裡[複製]-> 右鍵選擇

->[配置發布、訂閱伺服器和分發]的圖形介面來配置資料庫複製了。

下面是按順序列出配置複製的步驟:

一、建立發布和分發伺服器

[歡迎使用配置發布和分發嚮導]->[選擇分發伺服器]

->[使"@servername"成為它自己的分發伺服器,sql server將建立分發資料庫和日誌]

->[制定快照資料夾]-> [自定義配置] -> [否,使用下列的預設配置] -> [完成]

上述步驟完成後, 會在當前"@servername" sql server資料庫裡建立了乙個distribion庫和

乙個distributor_admin管理員級別的使用者(我們可以任意修改密碼)

伺服器上新增加了四個作業:

[ **程式歷史記錄清除: distribution ]

[ 分發清除: distribution ]

[ 複製**程式檢查 ]

[ 重新初始化存在資料驗證失敗的訂閱 ]

sql server企業管理器裡多了乙個複製監視器, 當前的這台機器就可以發布、分發、訂閱了。

我們再次在sql server企業管理器裡[複製]-> 右鍵選擇

->[配置發布、訂閱伺服器和分發],可以看到類似下圖:

我們可以在 [發布伺服器和分發伺服器的屬性] 視窗

-> [發布伺服器] -> [新增]        -> [確定]

-> [發布資料庫] -> [事務]/[合併] -> [確定]

-> [訂閱伺服器] -> [新增]        -> [確定]       

把網路上的其它sql server伺服器新增成為發布或者訂閱伺服器.

新增一台發布伺服器的選項:   

我這裡新建立的jin001發布伺服器是用管理員級別的資料庫使用者test連線的,      

到發布伺服器的管理鏈結要輸入密碼的可選框, 預設的是選中的,

在新建的jin001發布伺服器上建立和分發伺服器fengyu/fengyu的鏈結的時需要輸入distributor_admin使用者的密碼

到發布伺服器的管理鏈結要輸入密碼的可選框,也可以不選,

也就是不需要密碼來建立發布到分發伺服器的鏈結(這當然欠缺安全,在測試環境下可以使用)

新增一台訂閱伺服器的選項:

二、新建立的網路上另一台發布伺服器(例如jin001)選擇分發伺服器

[歡迎使用配置發布和分發嚮導]->[選擇分發伺服器]

-> 使用下列伺服器(選定的伺服器必須已配置為分發伺服器) -> [選定伺服器](例如fengyu/fengyu)

-> [下一步] -> [輸入分發伺服器(例如fengyu/fengyu)的distributor_admin使用者的密碼兩次]

-> [下一步] -> [自定義配置] -> [否,使用下列的預設配置]

-> [下一步] -> [完成] -> [確定]

建立乙個資料庫複製發布的過程:

[複製] -> [發布內容] -> 右鍵選擇 -> [新建發布]

-> [下一步] -> [選擇發布資料庫] -> [選中乙個待發布的資料庫]

-> [下一步] -> [選擇發布型別] -> [事務發布]/[合併發布]

-> [下一步] -> [指定訂閱伺服器的型別] -> [執行sql server 2000的伺服器]

-> [下一步] -> [指定專案] -> [在事務發布中只可以發布帶主鍵的表] -> [選中乙個有主鍵的待發布的表]

->[在合併發布中會給表增加唯一性索引和 rowguidcol 屬性的唯一識別符號字段[rowguid],預設值是newid()]

(新增新列將: 導致不帶列列表的 insert 語句失敗,增加表的大小,增加生成第乙個快照所要求的時間)

->[選中乙個待發布的表]

-> [下一步] -> [選擇發布名稱和描述] ->

-> [下一步] -> [自定義發布的屬性] -> [否,根據指定方式建立發布]

-> [下一步] -> [完成] -> [關閉]

發布屬性裡有很多有用的選項:設定訂閱到期(例如24小時)

設定發布表的專案屬性:

常規視窗可以指定發布目的表的名稱,可以跟原來的表名稱不一樣。

下圖是命令和快照視窗的欄目  

( sql server 資料庫複製技術實際上是用insert,update,delete操作在訂閱伺服器上重做發布伺服器上的事務操作

看文件資料需要把發布資料庫設成完全恢復模式,事務才不會丟失

但我自己在測試中發現發布資料庫是簡單恢復模式下,每10秒生成一些大事務,10分鐘後再收縮資料庫日誌,

這期間發布和訂閱伺服器上的作業都暫停,暫停恢復後並沒有丟失任何事務更改 )

發布表可以做資料篩選,例如只選擇表裡面的部分列:

例如只選擇表裡某些符合條件的記錄, 我們可以手工編寫篩選的sql語句:

發布表的訂閱選項,並可以建立強制訂閱:

成功建立了發布以後,發布伺服器上新增加了乙個作業: [ 失效訂閱清除 ]

分發伺服器上新增加了兩個作業:

[ jin001-dack-dack-5 ] 型別[ repl快照 ]

[ jin001-dack-3 ]      型別[ repl日誌讀取器 ]

上面藍色字的名稱會根據發布伺服器名,發布名及第幾次發布而使用不同的編號

repl快照作業是sql server複製的前提條件,它會先把發布的表結構,資料,索引,約束等生成到發布伺服器的os目錄下檔案

(當有訂閱的時候才會生成, 當訂閱請求初始化或者按照某個時間表排程生成)

repl日誌讀取器在事務複製的時候是一直處於執行狀態。(在合併複製的時候可以根據排程的時間表來執行)

建立乙個資料庫複製訂閱的過程:

[複製] -> [訂閱] -> 右鍵選擇 -> [新建請求訂閱]

-> [下一步] -> [查詢發布] -> [檢視已註冊伺服器所做的發布]

-> [下一步] -> [選擇發布] -> [選中已經建立發布伺服器上的資料庫發布名]     

-> [下一步] -> [指定同步**程式登入] -> [當**程式連線到**伺服器時:使用sql server身份驗證]

(輸入發布伺服器上distributor_admin使用者名稱和密碼)     

-> [下一步] -> [選擇目的資料庫] -> [選擇在其中建立訂閱的資料庫名]/[也可以新建乙個庫名]  

-> [下一步] -> [允許匿名訂閱] -> [是,生成匿名訂閱]     

-> [下一步] -> [初始化訂閱] -> [是,初始化架構和資料]     

-> [下一步] -> [快照傳送] -> [使用該發布的預設快照資料夾中的快照檔案]

(訂閱伺服器要能訪問發布伺服器的repldata資料夾,如果有問題,可以手工設定網路共享及共享許可權)     

-> [下一步] -> [快照傳送] -> [使用該發布的預設快照資料夾中的快照檔案]     

-> [下一步] -> [設定分發**程式排程] -> [使用下列排程] -> [更改] -> [例如每五分鐘排程一次]     

-> [下一步] -> [啟動要求的服務] -> [該訂閱要求在發布伺服器上執行sqlserveragent服務]     

-> [下一步] -> [完成] -> [確定]     

成功建立了訂閱後,訂閱伺服器上新增加了乙個類別是[repl-分發]作業(合併複製的時候類別是[repl-合併])

它會按照我們給的時間排程表執行資料庫同步複製的作業

檢視它的歷史記錄運**況,例圖   

在分發伺服器的[複製監視器]->[發布伺服器]->[發布名稱]->[日誌讀取器]->右鍵選擇->[**程式歷史記錄]

複製分發資料庫

sql服務 sql 登入身份設定為 localsystem 準備 1.修改布伺服器 訂閱伺服器和見證伺服器上的sqlserver服務賬號和sqlserver agent的服務賬號,使三者之間的使用者名稱和密碼一致。方法 configuration tools sqlserver configurat...

MS SQL入門基礎 複製監視器

在sql server 中,複製是功能最為強大而又最為複雜的元件,所以在具體的應用中複製出現錯誤是難以避免的事情。但同時令人欣慰的是,sql server 提供了複製管理工具 複製監視器來幫助dba 查出複製錯誤發生的原因。利用複製監視器可以 瀏覽所有的出版者出版物以及由該分發者所支援的訂購 瀏覽複...

MS SQL 鎖與事務

ms sql 鎖與事務 加鎖的主要目的是為了防止併發操作時導致的資料不一致等問題,鎖分為共享鎖 s 更新鎖 u 排他鎖 x 共享鎖與更新只是單向相容?傳說中的單相思?事務事務能保證資料操作的原子性,要麼內部操作都提交,要麼都回退。事務內部某個地方出錯時,可以回滾前面的操作,比如更新 刪除等。複製 b...