邹老师你好,久仰你的大名了,有一个问题折磨了我好久,仍然没有解决,恳请走老师指点,谢谢
现在的情况是这样的,在同一个局域网里面有两台sqlserver2005的数据库服务器(host1和host2),现在局域网中的某些客户端是链接到host1服务器,有的客户端又是连接到host2数据库服务器,需要解决的是两台数据库服务器中数据的同步问题,不管哪台数据库服务器中的数据发生变动都需要同步到另外一台数据库服务器,保证任何时候两台数据库服务器中的数据都是最新的.
因为现在应用比较庞大,所有在应用程序中实现同时往两台服务器写数据的方式是不现实的,我也尝试过使用sqlserver2005的复制方法,但是这样两台服务器都需要既是发布服务器又是订阅服务器,这样会导致死锁.
看看邹老师有没有什么好的解决方法呢?谢谢了
现在的情况是这样的,在同一个局域网里面有两台sqlserver2005的数据库服务器(host1和host2),现在局域网中的某些客户端是链接到host1服务器,有的客户端又是连接到host2数据库服务器,需要解决的是两台数据库服务器中数据的同步问题,不管哪台数据库服务器中的数据发生变动都需要同步到另外一台数据库服务器,保证任何时候两台数据库服务器中的数据都是最新的.
因为现在应用比较庞大,所有在应用程序中实现同时往两台服务器写数据的方式是不现实的,我也尝试过使用sqlserver2005的复制方法,但是这样两台服务器都需要既是发布服务器又是订阅服务器,这样会导致死锁.
看看邹老师有没有什么好的解决方法呢?谢谢了
解决方案 »
- 向大侠们请教sql server数据库中insert大量数据的问题!
- Sqlserver 2005 读取excel时的一个很奇怪的问题,在线狂等!
- 怎样向sql server中一次性提交多条记录?急急急急急
- SQLSERVER2008 注册表问题
- 表间关连和内嵌视图间关连的区别问题,高手看看
- 求方案
- 求一帶行號的查詢語句,要求得以下結果:
- 怎样在SQL server 2000中实现表之间的联系,初学SQL server 2000,好多不懂!急
- 这种操作的 触发器怎样写(SOS)?
- 一个字段用“、”分割,怎么统计?详细请进。。。
- 已超过了锁请求超时时段
- 运行程序连接数据库时出错,error40,请帮忙解决,急!
? 快照复制:快照复制将数据以特定时刻的瞬时状态分发,而不监视对数据的更新。发生同步时,将生成完整的快照并将其发送到订阅服务器。
? 合并复制:合并复制通常是从发布数据库对象和数据的快照开始,并且用触发器跟踪在发布服务器和订阅服务器上所做的后续数据更改和架构修改。订阅服务器在连接到网络时将与发布服务器进行同步,并交换自上次同步以来发布服务器和订阅服务器之间发生更改的所有行。
二、复制实例 这里以配置一个事务复制来说明复制配置过程 。 试验在同一台机器的二个实例间进行,实例名分别是SERVER01、SERVER02 。将SERVER01配置发布服务器和分发服务器(也就是前面提到的“本地分发服务器”),SERVER02配置为订阅服务器。在本例中将SERVER01中一个DBCoper库中person表作为发布的数据,在发布前请确保person表有主键、SQL SERVER 代理自动启动、发布数据库是日志是完整模式。 第一步:完全备份SERVER01 DBCopy数据库,在SERVER02上恢复DBCopy数据库(复制前的同步,使用发布的源和目标数据一致)。 第二步: 在SERVER01上设置发布和分发。 A、 在SERVER01的复制节点-->本地发布右键选择新建订阅(如图2)。 图2 B、 在新建发布向导中首先要求选择分发服务器,本例选择本机作为分发服务器,选择默认值(如图3)。图3 C、 向导第三步要求选择快照的路径,一般情况下选择默认路径。 D、 向导第四步选择发布的数据库(如图四),选择DBCopy。 图4 E、 接着选择发布的类型,这里选择事务复制(如图5)。图5 F、 选择发布的内容(PERSON),这里不仅可以发表,还可以发布其他的数据库对象,比如函数。在选择某一个表之后还可以选择发布某一列或几列。在这个步骤下一个界面中可以选择要发布的行。图6 G、 设置发布的内容之后设置 运行SQL代理的账号。设置如下:图7 H、 设置上一步之后,给复制起个名字PersonCopy。到此为止,发布和分发已配置成功(如图8)。 图8 第三步:配置订阅 订阅有两种方种,一种是由发布服务器向订阅服务器“推”数据,由订阅服务器去请求订阅数据。本例在SERVER02上设置请求订阅。 A、 第一步在SERVER02复制节点右击订阅,新建订阅(图9)。 图9 B、 选择发布服务器,在下拉列表框中选择查找SQL SERVER 发布服务器,选择SERVER01,就可以看到刚才新建的发布PersonCopy(如图10)。图10 C、 选择订阅方式(如图11), 这里选择请求订阅。图11 D、 选择订阅的本地数据库(如图12)。图12 E、 设置完本地数据库之后要求设置运行代理的安全性,设置成SQL 代理账号。完成以上设置后,订阅已设置完成。 在SERVER01表中插入一条新记录后,在SERVER02中去检查是否同步过来。一般来说,几乎SERVER01执行完了,SERVER02就可以看到更新后的数据。
发布服务器和订阅服务器的角色不是互斥的;服务器可以同时担任二者。例如,假定服务器 A 发布发布 1,并且服务器 B 发布发布 2。在此情况下,服务器 A 既可作为发布 1 的发布服务器,也可作为发布 2 的订阅服务器。合并复制是由快照代理程序和合并代理程序实现的。快照代理程序准备快照文件,其中包含已发布表的架构和数据,然后将这些文件存储在快照文件夹中,并在发布数据库中插入同步作业。快照代理程序还创建复制特定的存储过程、触发器和系统表。合并复制代理程序将保存在发布数据库表中的初始快照作业应用到订阅服务器上。该代理程序也合并那些创建初始快照之后在发布服务器或订阅服务器上发生的增量数据更改,并根据配置的规则或者使用创建的自定义冲突解决程序协调冲突。合并复制的冲突
当发布服务器与订阅服务器重新连接并开始同步时,合并代理程序检测冲突,然后根据冲突解决程序决定所要接受并传播至其它站点的数据。该冲突解决程序是执行合并发布时指定的。冲突检测
合并代理程序根据项目数据库的表 MSmerge_contents 中的沿袭值检测冲突。解决冲突
当检测到冲突之后,合并代理程序启动选中的冲突解决程序。查看冲突
复制将会创建数张可用以查看冲突及冲突解决信息的表。此外,冲突查看器将会显示冲突行并可用作冲突查看工具。
只给楼主推荐DBTWIN,楼主可联系他们老总,而且可以给你以技术开发上的指导。