数据同步的问题

jackymi 2009-07-16 11:15:27
源服务器一台,目标服务器一台。两台服务器的数据结构有可能不一样。现在有一需求就是在源服务器上如果有数据发生变动(增删改)就要根据目标服务器的结构逻辑实时的同步至目目标服务器。

现在考虑的几套方案:

1.通过源服务器的程序实现(优点:能很好的实现并能实时的保证数据的正确性。缺点:修改的程序太多,不好控制程序的质量)
2.同步触发器的方式更新(优点:同上。缺点:性能上不符合要求),不予考虑。
3.通过作业监控表的方式(优点:改动动作最小。缺点:有些源库的表里面没有时间戳字段,无法实现)。

想在此和大家探讨一些新的方式看看能不能实现同步数据的方式。



...全文
105 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Q315054403 2009-07-17
  • 打赏
  • 举报
回复
手动写同步处理
偶做过这个方案,而且两台服务器还不能直接通信
  • 打赏
  • 举报
回复
复制订阅为什么不考虑?
ChinaJiaBing 2009-07-17
  • 打赏
  • 举报
回复
SQL SERVER 2005 同步复制技术

以下实现复制步骤(以快照复制为例)

运行平台SQL SERVER 2005

一、准备工作:

1.建立一个 WINDOWS 用户,设置为管理员权限,并设置密码,作为发布快照文件的有效访问用户。

2.在SQL SERVER下实现发布服务器和订阅服务器的通信正常(即可以互访)。打开1433端口,在防火墙中设特例

3.在发布服务器上建立一个共享目录,作为发布快照文件的存放目录。例如:在D盘根目录下建文件夹名为SqlCopy

4.设置SQL 代理(发布服务器和订阅服务器均设置)本篇文章发表于www.xker.com(小新技术网)

打开服务(控制面板---管理工具---服务)

---右击SQLSERVER AGENT---属性---登录---选择“此帐户“

---输入或选择第一步中创建的WINDOWS 用户

---“密码“中输入该用户密码

5.设置SQL SERVER 身份验证,解决连接时的权限问题(发布、订阅服务器均设置)

步骤为:对象资源管理器----右击SQL实例-----属性----安全性----服务器身份验证------选“SQL Server和WINDOWS“,然后点确定

6.开启SQL Server 2005的网络协议TCP/IP和管道命名协议并重启网络服务。

7.在SQL Server中创建步骤1中对应的系统用户登陆名,作为发布数据库的拥有者(设置为dbo_owner和public)。

8.以系统超级用户sa登陆SQL Server建立数据库和表。

9.发布服务器和订阅服务器互相注册

步骤如下:视图----单击以注册服务器----右键数据库引擎----新建服务器注册-----填写要注册的远程服务器名称------身份验证选“SQL Server验证“-----用户名(sa) 密码------创建组(也可不建)-----完成。

10.对于只能用IP,不能用计算机名的,为其注册服务器别名

二、开始:

发布服务器配置(在发布服务器上配置发布和订阅)

1. 选择 复制 节点

2. 右键本地发布 ----下一步---------系统弹出对话框看提示----直到“指定快照文件夹“

----在“快照文件夹“中输入准备工作中创建的目录(指向步骤3所建的共享文件夹)------选择发布数据库-------选择发布类型-------选择订阅服务器类型-------选择要发布的对象------设置快照代理-------填写发布名称。本篇文章发表于www.xker.com(小新技术网)

3. 右键本地订阅--------选择发布服务器-------选择订阅方式(如果是在服务器方订阅的话选择推送订阅反之

选择请求订阅)-------填加订阅服务器--------选择代理计划(一般选择连续运行)---------其余选择默认项。




lweia 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jackymi 的回复:]
想啦一套这种方案采用

源库-----》中间库(结构与源库相同)-----》目标库

源库和中间库采用事务复制的方式,然后中间库利用触发器更新至目标库


但是不知道源库开启发布订阅后,监控的时间间隔过小,例如5秒以内的话会不会对源库的服务器的性能有影响(因为目标库要求的实时性非常高)。
[/Quote]

用分发服务器,不会给源有压力.

claro 2009-07-17
  • 打赏
  • 举报
回复
数据结构不一样也没有关系,可以针对数据或单独表进行同步,关键是用结合实际情况采用较合理的方式方法。
feixianxxx 2009-07-16
  • 打赏
  • 举报
回复
帮顶
olddown 2009-07-16
  • 打赏
  • 举报
回复
也可考虑一下订阅发布技术
mugua604 2009-07-16
  • 打赏
  • 举报
回复
触发器
sdhdy 2009-07-16
  • 打赏
  • 举报
回复
触发器也许是一个不错的选择。
jackymi 2009-07-16
  • 打赏
  • 举报
回复
想啦一套这种方案采用

源库-----》中间库(结构与源库相同)-----》目标库

源库和中间库采用事务复制的方式,然后中间库利用触发器更新至目标库


但是不知道源库开启发布订阅后,监控的时间间隔过小,例如5秒以内的话会不会对源库的服务器的性能有影响(因为目标库要求的实时性非常高)。
--小F-- 2009-07-16
  • 打赏
  • 举报
回复
用事务复制或者订阅 发布
lweia 2009-07-16
  • 打赏
  • 举报
回复
回答:

讲一下复制订阅

发布表和订阅表 表名可以不一样
表结构可以有一点不一样(但发布字段在订阅字段必须要有必须相同)

具体要看你的发布表和订阅表了

请把表具体话一下,我才能回答.
zc_0101 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 jackymi 的回复:]
源服务器一台,目标服务器一台。两台服务器的数据结构有可能不一样。现在有一需求就是在源服务器上如果有数据发生变动(增删改)就要根据目标服务器的结构逻辑实时的同步至目目标服务器。

现在考虑的几套方案:

      1.通过源服务器的程序实现(优点:能很好的实现并能实时的保证数据的正确性。缺点:修改的程序太多,不好控制程序的质量)
      2.同步触发器的方式更新(优点:同上。缺点:性能上不符合要求),不予考虑。
      3.通过作业监控表的方式(优点:改动动作最小。缺点:有些源库的表里面没有时间戳字段,无法实现)。

  想在此和大家探讨一些新的方式看看能不能实现同步数据的方式。

                                       

                       
[/Quote]

数据结构都不一样。。。。。
guguda2008 2009-07-16
  • 打赏
  • 举报
回复
帮顶,这分接不了
jia_guijun 2009-07-16
  • 打赏
  • 举报
回复
事务复制

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧