SQL SERVER 數據庫複製之事務性複製

SQL SERVER 2005數據庫複製之事務複製
事務複製與快照複製不同,快照複製僅僅是對數據庫進行一次掃描,並將其內容複製分發到服務器上,
而事務複製是對數據庫進行實時的監測,隨時將數據庫的變化複製下來,分發到服務器上。
下面讓我們做個實驗來測試一下
首先我們需要2臺服務器分別作爲發佈&分發服務器(server1)和訂閱服務器(server2
事務發佈與快照發布還有不同,事務發佈的數據庫內的表必須有主鍵
首先讓我們來看下server1裏面的數據情況
Server1中有個DB1數據庫,在DB1數據庫中有一個名爲test的表,裏面共有5條記錄
然後我們在數據庫的對象管理器中點擊複製,在本地發佈上點右鍵選擇新建發佈
 
 
然後選擇我們要發佈的數據庫DB1
 
 
 
我們要做的是事務性發布
勾選要發佈的表
 
 
 
因爲我們要複製的是表的全部內容,所以篩選這一項爲空
 
立即創建快照
 
 
 
下面是對代理服務器的安全設置
 
 
我們就用Serveradministrator用戶
 
 
 
創建發佈
 
 
爲此發佈取名爲test
 
發佈創建成功
 
 
下面我問換到Server2
看一下
Server2中又一個db1數據庫
但是庫裏面是空的
 
點擊複製,右鍵點擊訂閱進行新訂閱的創建
 
發佈服務器選擇server1
我們看到server2已經發現了server1的發佈
我們在server1上運行所有代理
 
我們請求訂閱的數據庫是db1
 
再次設置分發代理的安全性
 
由於訂閱服務器是server2自己
所以對訂閱服務器安全性不需要設置
 
我們選擇連續運行
 
 
立即初始化進行同步
 
開始創建訂閱
 
訂閱創建成功
 
 
下面我們來看一下server2db1數據庫中有沒有變化
我們可以看到在表中出現了test表,而且在本地訂閱中也生成了對server1的訂閱
 
再來看下錶中信息
 
可以看到
信息已經同步成功
下面我在server1DB1數據庫中的test表中插入一條記錄
 
我們再切換到server2上看一下
 
OK ,實驗圓滿成功
 
 
 
 
 
注:1事務性發布的表中必須要有主見
2計算機名與SQL SERVER中識別的服務器名不一樣的情況,次試驗也會失敗。
可以用此腳本同步計算機名
if  serverproperty('servername')  <>  @@servername  

begin  

           declare  @server  sysname  

           set  @server  =  @@servername  

           exec  sp_dropserver  @server  =  @server  

           set  @server  =  cast(serverproperty('servername')  as  sysname)              

           exec  sp_addserver  @server  =  @server  ,  @local  =  'LOCAL'  

end  

 

執行後需要重啓SQL SERVER核心服務和代理服務
 
 
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章