SQL SERVER(2005/2008)数据库同步复制操作教程

原文请看我的空间:http://user.qzone.qq.com/361367651/blog/1372927361 
SQL Server 2005虽然都有一个相当大的提高,当时它的复制同步功能设置的参数稍微不准确就会导致同步失败。下面就已本人实际测试成功的案例作说明,详细介绍一下怎么发布和订阅数据库。
案例说明: 

现有两台服务器A和B 其配置如下:

[img=http://b163.photo.store.qq.com/psb?/V11xFz8r3UOa3G/2Xl24XcWiZq1ooPrsZb5g3KfCqMP6YEuU*KtsqCvPa0!/b/dEZoLGG7FwAA&bo=zAGlAAAAAAABAE8!][/img]
 

图1
案例要求:B作为备份服务器,每天定时从A服务器把数据库PubTest数据同步复制过来。保持数据完全一致。
下面就开始说怎么设置:


一、准备工作: 

1.建立windows帐号
    分别在A和B上建立一个相同的 WINDOWS 用户和密码,设置为管理员权限。本例中都设置为用户名:pub,密码:1
 2.保证网络互通
在SQL SERVER下A和B通过计算机名通信正常(发布需要用实际的服务器名称,不能使用服务器的IP地址进行。如果使用IP会有错误)。如果A和B不在同一个网段中,可以分别在A、B服务器上修改hosts文件建立别名。设置方法是:比如修改A服务器hosts

<1>打开记事本,文件-打开-输入文件名:
<2>格式为:IP地址+空格+计算机名 。然后保存,关闭。如下:
192.168.0.2   ServerB
3.设置发布存放目录
在发布服务器A上建立一个共享目录,作为发布快照文件的存放目录。本案例在D盘根目录下建文件夹名为SqlCopy 。并且设置文件夹安全选项 如下图:



图2
 
4. 注册SQL
 发布服务器A和订阅服务器B互相注册 步骤如下:
打开A服务器中的SQL Server Management Studio ,以下简称为SSMS,打开视图->已注册服务器->右键数据库引擎->新建服务器注册-----填写要注册的远程服务器名称(ServerB)->身份验证选“SQL Server验证“->用户名(sa) 密码->创建组(也可不建)->完成。 在服务器B上做同样的操作注册A。
 

图3

图4

5.设置SQL 代理(发布服务器和订阅服务器均设置) 
在A和B分别启动SQL Server 代理服务,复制与订阅必须依靠此服务才能进行。然后把代理启动帐号设置为步骤1创建的帐号pub。
设置方法:打开配置工具->SQL Server Configuration Manager->SQL SERVER 2005 服务->右键SQL Server Agent(MSSSQLSERVER)->属性->选此帐号->输入帐号 pub 密码1->点确定。
特别注意:代理启动帐号切忌不能在服务(控制面板---管理工具---服务) 中修改。这样会导致失败。 通过SQL Server Configuration Manager修改,系统会做一些额外的设置比如会把pub帐号加入到SQLServer2005SQLAgentUser$XX$XX组里。





图5

6.建立SQL登录帐号
分别在A和B服务器上,在SQL Server中创建步骤1中对应的系统用户登陆名pub,作为发布数据库PubTest的拥有者(设置为dbo_owner和public)。B作为订阅服务器,首先建立一个空的数据库PubTest。数据结构和A上的PubTest一致。
首先在A建帐号pub步骤如下:在B上做同样的操作。



图6 




图7 

图8 


二、发布服务器配置( 在发布服务器A上配置发布)

1.在服务器A上,打开SSMS,以sa帐号登陆,点开【复制】->右键单击【本地发布】,选择【新建发布】。

  
图9

2.选择【下一步】,然后就进入新建发布的向导了,如果第一次新建发布,有可能出现下面图11、图13,否则不会遇到这些界面
如果SQL代理服务不是自动启动,会出现界面图12。


图10

图11

图12

图13 
 3.选择[下一步]你要发布的数据库PubTest,这里只能单选,不能选择多个数据库。如图14

 
图14 

 4.接下来,关于选择发布类型,根据你的实际情况,选择合适的发布类型,本例中选择的是[快照发布]
快照:快照复制将数据以特定时刻的瞬时状态分发,而不监视对数据的更新。发生同步时,将生成完整的快照并将其发送到订阅服务器。  当符合以下一个或多个条件时,使用快照复制本身是最合适的:  
    1: 很少更改数据。 
    2: 在一段时间内允许具有相对发布服务器已过时的数据副本。 
    3: 复制少量数据。  
  4: 在短期内出现大量更改。    

事务:事务复制通常用于服务器到服务器环境中, 在以下各种情况下适合采用事务复制:  
 1: 希望发生增量更改时将其传播到订阅服务器。  
 2: 从发布服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的滞后时间较短。   
   3: 应用程序需要访问中间数据状态。 例如,如果某一行更改了五次,事务复制将允许应用程序响应每次更改(例如,激发触发器),而不只是响应该行最终的数据更改。
   4:发布服务器有大量的插入、更新和删除活动。  
 5:发布服务器或订阅服务器不是 SQL Server 数据库(例如,Oracle)。  

具有可更新订阅的事务发布:

事务复制支持在订阅服务器中通过可更新订阅和对等复制来进行更新。下面介绍两种可更新订阅:

立即更新。必须连接发布服务器和订阅服务器才能在订阅服务器中更新数据。

排队更新。不必连接发布服务器和订阅服务器即可在订阅服务器中更新数据。可以在订阅服务器或发布服务器脱机时进行更新。

在订阅服务器中更新数据时,首先将数据传播到发布服务器,然后再传播到其他订阅服务器。如果使用立即更新,将使用两阶段提交协议立即传播更改。如果使用排队更新,更改将存储在队列中;当网络连接可用时,再在发布服务器中异步应用排队事务。由于更新异步传播至发布服务器,所以发布服务器或另一台订阅服务器有可能更新同一数据,而在应用更新时会发生冲突。将根据创建发布时设置的冲突解决策略检测和解决冲突。

如果在新建发布向导中创建具有可更新订阅的事务发布,将同时启用立即更新和排队更新。如果使用存储过程创建发布,则可以启用一个或两个选项。创建发布的订阅时,可以指定要使用的更新模式。如有必要,以后可以在两种更新模式之间切换。有关详细信息,请参阅下面的“在更新模式之间切换”部分

合并复制:并复制通常用于服务器到客户端的环境中。合并复制适用于下列各种情况:  
  
  1:多个订阅服务器可能会在不同时间更新同一数据,并将其更改传播到发布服务器和其他订阅服务器。 

2:订阅服务器需要接收数据,脱机更改数据,并在以后与发布服务器和其他订阅服务器同步更改。 

  3:每个订阅服务器都需要不同的数据分区。  
4:可能会发生冲突,并且在冲突发生时,您需要具有检测和解决冲突的能力。  
5:应用程序需要最终的数据更改结果,而不是访问中间数据状态。 例如,如果在订阅服务器与发布服务器进行同步之前,订阅服务器上的行更改了五次,则该行在发布服务器上仅更改一次来反映最终数据更改(也就是第五次更改的值)。  


图15
5.选择要发布的项目和以及要筛选的行,本例中选择全部。
  
    图16
 
图17 
 6.配置快照生成的频率和周期,下面定时 每天0点生成新快照。

图18 
 
图19 
7. 设置代理账户
操作方法如图所示:点击 安全设置弹出 图21
 
图20
输入先前创建的windows账户 pub,前面需要加计算机名"ServerA\ ".连接到发布服务器,选择【使用以下SQL server登录名】,输入服务器A sql 登录名sa及密码sa321 .
 
图21 
8.下一步,创建发布.发布操作到此完成。回到SSMS界面,右键刚才发布的项目 Test,选择【启动复制监视器】查看是否有错误。如果没异常,就可以进行订阅设置了。
 
图22
 
图23 
 三、订阅服务器设置
1.登录订阅服务器B,可以在A上登录,也可以从B本地登录,打开SSMS管理器,右键单击【本地订阅】,选择【新建订阅】。

图24 
2.选择发布服务器ServerA,验证方式选择【SQL Server 身份验证】输入sa密码"sa123",点连接
 

图25 
 

图26 
 接着弹出界面图27,选择刚才发布的Test,点击【下一步】

图27 
3.分发代理位置选择第二项【在其订阅服务器上运行每个代理】减轻A服务器负担。点【下一步】
 
图28 
4.选择事先建好的订阅数据库PubTest,点【下一步】
 
图29 
5.设置账户,点击设置按钮弹出图31


图30 
 在图31界面中,选择【在以下windows账户下运行】,输入进程账户也就是先前建立的pub账户,输入密码1.
下面的连接到分发服务器,选择【使用以下SQL Server 登录名】,也就是服务器A的SQL 登录名”sa“及密码”sa123 “,然后定确定,图30中,点下一步

图31 
 

图32 
 6.设置运行计划,可以设置按计划运行,这里选的是连续运行,


图33  
选择立即初始化 ,下一步,最后点【完成】开始创建订阅进度界面图37.

图34  

图35  

图36 

图37 
 7.回到SSMS界面,右键创建的订阅PubTest,选择【查看同步状态】,查看是否运行以及是否有错误。


 
 

 
四、常见问题解决方案
 1.发布时出现“无法开始执行步骤 2 (原因: 验证代理 XX\XX的身份时出错,系统错误: 登录失败: 未知的用户名或错误密码。).  该步骤失败。”解决办法打SP2以上补丁。
2.“进程无法读取文件“XX\unc\GSEOMARKSERVER1_PRODAAMS_TESTMERGE\20130223095566\xxxx_2.pre”。 (源: MSSQL_REPL,错误号: MSSQL_REPL20016)获取帮助:http://help/MSSQL_REPL20016系统找不到指定的路径。"
解决方法:订阅的目录需指定到发布服务器的发布目录.

猜你喜欢

转载自www.cnblogs.com/SyncNavigator8-4-1/p/10974380.html