SQL SERVER 数据库复制之事务性复

SQL SERVER 2005数据库复制之事务复制
事务复制与快照复制不同,快照复制仅仅是对数据库进行一次扫描,并将其内容复制分发到服务器上,
而事务复制是对数据库进行实时的监测,随时将数据库的变化复制下来,分发到服务器上。
下面让我们做个实验来测试一下
首先我们需要2台服务器分别作为发布&分发服务器(server1)和订阅服务器(server2
SQL SERVER 数据库复制之事务性复_第1张图片
事务发布与快照发布还有不同,事务发布的数据库内的表必须有主键
首先让我们来看下server1里面的数据情况
Server1中有个DB1数据库,在DB1数据库中有一个名为test的表,里面共有5条记录
SQL SERVER 数据库复制之事务性复_第2张图片
然后我们在数据库的对象管理器中点击复制,在本地发布上点右键选择新建发布
SQL SERVER 数据库复制之事务性复_第3张图片
然后选择我们要发布的数据库DB1
SQL SERVER 数据库复制之事务性复_第4张图片
我们要做的是事务性发布
SQL SERVER 数据库复制之事务性复_第5张图片
勾选要发布的表
SQL SERVER 数据库复制之事务性复_第6张图片
因为我们要复制的是表的全部内容,所以筛选这一项为空
立即创建快照
下面是对代理服务器的安全设置
我们就用Serveradministrator用户
SQL SERVER 数据库复制之事务性复_第7张图片
创建发布
SQL SERVER 数据库复制之事务性复_第8张图片
为此发布取名为testSQL SERVER 数据库复制之事务性复_第9张图片
发布创建成功
SQL SERVER 数据库复制之事务性复_第10张图片
下面我问换到Server2
看一下
Server2 中又一个db1数据库
但是库里面是空的
SQL SERVER 数据库复制之事务性复_第11张图片
点击复制,右键点击订阅进行新订阅的创建
SQL SERVER 数据库复制之事务性复_第12张图片
发布服务器选择server1
我们看到server2已经发现了server1的发布
SQL SERVER 数据库复制之事务性复_第13张图片
我们在server1上运行所有代理
SQL SERVER 数据库复制之事务性复_第14张图片
我们请求订阅的数据库是db1
再次设置分发代理的安全性
SQL SERVER 数据库复制之事务性复_第15张图片
由于订阅服务器是server2自己
所以对订阅服务器安全性不需要设置
SQL SERVER 数据库复制之事务性复_第16张图片
我们选择连续运行
立即初始化进行同步
SQL SERVER 数据库复制之事务性复_第17张图片
开始创建订阅
SQL SERVER 数据库复制之事务性复_第18张图片
订阅创建成功
下面我们来看一下server2db1数据库中有没有变化
SQL SERVER 数据库复制之事务性复_第19张图片
我们可以看到在表中出现了test表,而且在本地订阅中也生成了对server1的订阅
再来看下表中信息
SQL SERVER 数据库复制之事务性复_第20张图片
可以看到
信息已经同步成功
下面我在server1DB1数据库中的test表中插入一条记录
SQL SERVER 数据库复制之事务性复_第21张图片
我们再切换到server2上看一下SQL SERVER 数据库复制之事务性复_第22张图片
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核心服务和代理服务

你可能感兴趣的:(SQL SERVER 数据库复制之事务性复)