首页 新闻 会员 周边

数据库相关问题100分

0
悬赏园豆:100 [已解决问题] 解决于 2012-05-08 08:17

假设有十个数据源,分布在十台不同物理位置的主机上,有的是sqlserver 有的是oracle

可能还有mssql 每个数据库的表数目和表里的字段更是大不同,如果需要把这十个数据源

用光纤连到一个路由器上,同步到另外一台机器上,而且不能改变数据源数据库的设置,

表中可能没有类似时间戳等容易做同步的东西。

请问需要怎么做比较合适?

没明白意思请留言。

自由用户的主页 自由用户 | 初学一级 | 园豆:155
提问于:2012-05-02 19:51
< >
分享
最佳答案
0

把10台数据源机器叫做source,把汇总的机器叫做target。推荐的做法是在target上安装sql server 2005+版本,然后开发一个Sql Server Intergration Service包(不懂的话自己搜索SSIS),它的开发很简单,基本上就是拖控件,而且支持各类数据源。然后讲这个SSIS包发布成一个job定时运行,从source上拖数据到target上汇总就可以了。

收获园豆:90
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-05-03 10:19

这种包在第一次导入全部数据后,源数据库进行了增删改,下次包定时运行的时候,能把改过或新增的数据导过来吗?

自由用户 | 园豆:155 (初学一级) | 2012-05-04 09:00

@自由用户: 可以啊,完全看你SSIS的包的代码是怎么写的。你可以每次都导入所有数据,可以每次都只导入最近一周的数据,或者N天的数据。SSIS包里也是一些代码,你想实现什么逻辑就用代码去实现就可以了。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-05-04 09:53
其他回答(3)
0

我留言,因为我没明白。

无之无 | 园豆:5095 (大侠五级) | 2012-05-02 20:06

哪里没明白?

支持(0) 反对(0) 自由用户 | 园豆:155 (初学一级) | 2012-05-02 20:28

@自由用户: 没明白你的阐述,没理解你的意思。

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-05-02 20:31
0

有N个任意数据库(mssql mysql oracle)数据表不尽相同但是你想按照一定的业务规则把数据同步到另外一个数据库上的一切表上是么?要是的话。在业务不复杂的前提下用订阅 复杂的自己设置链接服务器写sql手动把数据insert到你要的表上

收获园豆:3
Nature Q | 园豆:342 (菜鸟二级) | 2012-05-02 20:59

其实数据库是别人的,所以说 “不能改变数据源数据库的设置”,如果要订阅,至少得在人家数据库上设“发布”吧。如果不动人家的数据库,还有什么办法同步?

支持(0) 反对(0) 自由用户 | 园豆:155 (初学一级) | 2012-05-02 23:11
0

要自己写程序去同步

收获园豆:4
az235 | 园豆:8483 (大侠五级) | 2012-05-02 23:19

设一张表有200W记录,程序如何知道更新了哪条记录?

支持(0) 反对(0) 自由用户 | 园豆:155 (初学一级) | 2012-05-03 08:24

@自由用户: 建立一张表,然后用户触发器,将更新的表名,唯一值都记录进去,更新就只需要到这张表去读取数据就行

支持(0) 反对(0) az235 | 园豆:8483 (大侠五级) | 2012-05-03 08:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册