sql server 2000的合并复制及遇到的一些问题

简要介绍一下:

sql2000提供了3种复制:

快照复制:每次同步时同步所有数据(属于从主服务器-〉备份服务器的单向复制)

事务复制:相当于增量复制,只复制改变了的数据(属于从主服务器-〉备份服务器的单向复制)

合并复制:相当于双向复制,随便一方改变了数据,其他方都会同步更新,这里也涉及到了数据冲突的问题

注:在做事务复制跟合并复制的时候,其实会隐含的自动做一次快照复制,来同步初始数据

=====================================================

实际操作:(可以先把这段看完)

由于需要双向同步,所以我选择了“合并复制”。以下步骤参考了几篇网络上的介绍,真的非常感谢。

基本安装方法请看“用强制订阅实现数据库同步操作”,这篇文章介绍的是“快照复制”,我在尝试合并复制的时候出现了几个快照复制所没遇到的问题,后面会付说明。

这篇文章在最后帮了我不少忙:SQL SERVER2000中订阅与发布的具体操作 。可以两篇结合一起看

另,在做合并复制的时候会涉及到好几个密码,我自己设把密码都设成一样的,比较好记,也比较不会出问题

另,“用强制订阅实现数据库同步操作”里面提到的如果sql服务器原先注册时用的名字是(local),要删掉,换成计算机名,我原担心删掉时原来的数据就没了,但后来发现担心多余,删掉local再用计算机名注册时原来的数据库都在。

另,每个表都要设主键,而且如果是自动标识的字段(自动编码?)要把 标识 设置成“是(不用于复制)”

=====================================================

注意事项:

(基本引用了SQL SERVER2000中订阅与发布的具体操作里面的说明)

主要是要注意权限的问题,一般做发布/订阅,建议你做如下准备工作:


1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
我的电脑
--控制面板
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户

2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:

我的电脑--D:/ 新建一个目录,名为: PUB
--右键这个新建的目录
--属性--共享(注:win2000和win2003下应该是“安全”吧?他可能用的是winxp来作说明)
--选择"共享该文件夹"(注:同上)
--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限(注:总之就是administrators组有完全权限就是了)
--确定


3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)

开始--程序--管理工具--服务
--右键SQLSERVERAGENT
--属性--登陆--选择"此账户"
--输入或者选择第一步中创建的windows登录用户名
--"密码"中输入该用户的密码

4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)

企业管理器
--右键SQL实例--属性
--安全性--身份验证
--选择"SQL Server 和 Windows"
--确定

5.对于只能用IP,不能用计算机名的,为其注册服务器别名
  (在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择"tcp/ip"
--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号

6.在发布服务器和订阅服务器上互相注册
企业管理器
--新建SQL Server注册...
--下一步--可用的服务器中,输入你要注册的远程服务器名注意,就算不是同一局域网的服务器也不能用ip,而是用计算机名,我觉得遇到的几个问题都跟这个有关)--添加
--下一步--连接使用,选择第二个"SQL Server身份验证"
--下一步--输入用户名和密码
--下一步--选择SQL Server组,也可以创建一个新组
--下一步--完成

====================================================

我的操作步骤,大概说几个,不同的方法应该也可以,只是我没试过而已:

发布:选择合并发布,我没选择匿名发布,因为已经知道订阅服务器的IP。发布完成之后,可以进入发布属性,我记得有一次在订约服务器上做请求订阅时出现“因为本发布的发布访问列表中没有包含该sql   server的代理帐户,所以同步代理程序无法进行.   ”,这里的“发布访问列表”就位于“发布属性”里面,但是我看了半天也不知道怎么回事。“同步伙伴”我用默认的“不选”。

配置订阅服务器:首先现在客户端实用工具里面建一个订阅服务器的别名(即把它的计算机名和IP榜定),然后在企业管理器中新注册一个服务器(连接我选的是“使用windows身份验证”这个),名字用订阅服务器的计算机名(大小写敏感?我这里都用大写,原本以为遇到的问题是由于计算机名用小写的缘故,但后来试验一下跟这个没关系,但计算机名最好用大写,不然安装sql的时候也可能会出问题)然后在“工具”-〉复制-〉配置发布、订阅和分发-〉订阅服务器-〉设置我们的订阅服务器(订阅服务器属性里面代理程序的连接选“模拟xxxx信任连接”那个)

强制订阅(推模式):“发布属性”-〉订阅-〉强制新建-〉选择我们订阅服务器计算机名的那个,然后一直下一步。同步时间可以设置为连续的(即实时同步),也可以设置每个一段时间同步一次,在复制监视器-〉发布服务器-〉计算机名-〉发布名-〉这是会看到 快照 和 订阅者 两项,点击它们的右键-〉代理程序属性-〉调度 中可以设置同步时间。

====================================================

问题集:(遇到的几个问题在后来都解决了,虽然不是很清楚原因,原因大概是:我原先在发布服务器中注册了一个订阅服务器,但用的是IP,后来删掉而改为计算机名之后就可以了)

在尝试合并复制的时候,出现过以下问题(有的是推模式下出现的,有的是拉模式下出现的):

假定:发布服务器为A,订阅服务器为B

问题1:我在用事务复制进行强制订阅时,出现了xxx表无法订阅,正处于复制状态中的错误(可能是之前有订阅过吧,没删干净?) 发现在B的复制-〉订阅中可以看到残留信息,但是却无法删除订阅。

解决办法:

exec sp_removedbreplication '订阅的数据库名'

也有人说:把B服务器下   企业管理器——》管理——》Sql   Server代理——》作业 下的东西删除,问题解决!  

问题2:进程未能连接到Distributor '@Server name'  (网上说:要修改sql服务启动的登录用户,但这步我很早就做好了,所以应该不是这个问题)

问题3:服务器运行失败

问题4:未能连接到服务器,因为distributor_admin未在该服务器上定义为远程登录(网上说“你肯定在装完SQL SERVER以后,改了计算机名,虽然sql server 还可以用,但一用复制时,SQL SERVER读取了旧的计算机实例名,不信,你试试select @@SERVERNAME显示出来的,肯定不是你现在的计算机名. ”。但我试了一下,确实是我的计算机名,所以也不是这个问题)

问题5:无法将架构脚本“xxxx”传播到订阅服务器(关于这个问题,网上查了一下,看到邹建说的办法,我放在回复中了,就不在主帖里面贴了,但似乎也没能解决这个问题,可能我出错的原因不一样吧)




[本日志由 wuhen 于 2007-03-26 02:15 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: sql 合并复制 双向同步
评论: 4 | 引用: 1 | 查看次数: 607
wuhen [2007-04-09 09:23 AM | del]
事务啊,我没研究咧,但有准备看一下这方面资料,之前的程序没用事务,后来发现程序中途出错的话就很麻烦了
番达普林斯 [2007-04-07 11:26 AM | del]
最近在研究事务回滚,有啥比较好的资料没有?共享一下
wuhen [2007-03-26 02:24 PM | del]
再注:在成功实现合并复制之后,进入复制监视器-〉发布服务器-〉计算机名-〉发布数据库的属性-〉状态-〉浏览快照 ,还是会出现不能访问路径的错误,不知道为什么,权限肯定是有了的.
wuhen [2007-03-23 06:11 PM | del]
问题: 数据库同步问题:订阅者:无法将架构脚本“//SH-PANNANZHEN/C$/Program   Files/Microsoft   SQL   Server/MSSQL/ReplData/unc/SH-JANE_test_test/20050205090905/V_SALE00_2183.sch”传播到订阅服务器。.     步骤失败。  

邹建说:

--权限没有设置好,参考下面的方法  
    
  1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户  
  我的电脑  
  --控制面板  
  --管理工具  
  --计算机管理  
  --用户和组  
  --右键用户  
  --新建用户  
  --建立一个隶属于administrator组的登陆windows的用户  
    
  2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:  
    
  我的电脑--D:/   新建一个目录,名为:   PUB  
  --右键这个新建的目录  
  --属性--共享  
  --选择"共享该文件夹"  
  --通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限  
  --确定  
    
    
  3.设置SQL代理(SQLSERVERAGENT)和mssqlserver服务的启动用户(发布/订阅服务器均做此设置)  
    
  开始--程序--管理工具--服务  
  --右键SQLSERVERAGENT  
  --属性--登陆--选择"此账户"  
  --输入或者选择第一步中创建的windows登录用户名  
  --"密码"中输入该用户的密码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值