从多个数据库向单一数据库定期汇入变更问题

icey 2008-08-03 01:07:56
我现在有2套系统,A系统和B系统, 2者都是用各自的数据库,都是SQL SERVER 2005。
A系统会布置在很多地方,每布置一个地方,就会有各自的数据库,里面的数据表结构都是一样的

当前我需要每隔一段时间(每周或者每月),将A数据内容汇总进B数据库。
这样汇总需求,从SQL SERVER功能上说,有什么功能能支持?定期把变更能够导出,然后能将多个导出内容导入B。
这种可能性是否有?SQL SERVER能否有这种功能?还是我必须使用程序来处理?
B数据库汇入A数据库的内容,表结构都一样,但是每个表都会需要增加一个多用户的标识符,已区隔不同的地方来源。

同时,对于A系统来说,每个数据库里面一些表,都会使用自增字段,很多地方都是用这种库,再汇入B系统的数据库中,肯定会存在ID冲突问题,所以都需要使用本身ID,加上多用户标识符来区隔,有没有别的什么方法,可以处理这种问题?让每个A系统的ID这种字段,各个库内可以不一致?

比较紧急,谢谢大家帮忙
...全文
214 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
oo_2008 2008-08-19
  • 打赏
  • 举报
回复
如果java程序可以用ice,在数据库中建几个日志表,然后设置一定时间(根据需要),使用拉数据的模式.......
icey 2008-08-06
  • 打赏
  • 举报
回复
SSIS是什么?
不是很清楚, 能给点参考吗?
icey 2008-08-06
  • 打赏
  • 举报
回复
SQL SERVER是新人,以前一直用ORACLE的
而且我们主要是开发人员级别的关注,并不是专门搞数据库的
谢谢了,我会看看
bwu851 2008-08-06
  • 打赏
  • 举报
回复
SSIS -- SQL SERVER Integrated Service, 前身是DTS.

不过比DTS功能强大. 既然你是用的SQL 2005, 不会没装SSIS吧??
bwu851 2008-08-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hery2002 的回复:]
这个估计要适用SSIS写脚本来完成,,,,
[/Quote]

因为是定期的, 又不是实时的, 建议用SSIS来完成.
cacar2008 2008-08-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cacar2008 的回复:]
ID如果是GUID的话就不会有问题。

ID是自增长,可以设置每台服务器的表的自增长开始值;这样做ID管理维护的工作量比较大。
[/Quote]

这样做仅仅适合数据量不是很大的管理信息系统,如分销,erp等
每分店[分部]ID分配100万个
cacar2008 2008-08-03
  • 打赏
  • 举报
回复
ID如果是GUID的话就不会有问题。

ID是自增长,可以设置每台服务器的表的自增长开始值;这样做ID管理维护的工作量比较大。
hyqwan11112 2008-08-03
  • 打赏
  • 举报
回复
如果说要增加多用户表示符并且还有其他数据表要生成数据,那就做个ssis包吧,然后在作业中定时执行。
icey 2008-08-03
  • 打赏
  • 举报
回复
是,可以认为是数据集成
现在等于把几个相同的数据库A, 里面内容不同,都定期汇总进数据库B。 结构上会增加一点多用户标识符
所以跟一个数据库内容,同步到另外一个还是有不同。
而且B数据库中还有一些自己的表
最好是有什么方法,能让我自动导数据
水族杰纶 2008-08-03
  • 打赏
  • 举报
回复
Sql server双机数据库同步实验步骤
第一步 测试网络连接

?1.实验环境(因人而异)
  服务器:
  机器名称:CHENPENG
  操作系统:Windows XP-sp2
  数据库版本:SQL 2000 Server 企业版

  客户端
  机器名称:PHOENIX
  操作系统:Windows XP-sp2
  数据库版本:SQL 2000 Server企业版

(注:实验中的两机在一个局域网中!)

?

2.测试网络

2.1 将SQL 2000升级为SP4(sp3以上即可)

2.2 测试步骤:

2.2.1 关闭双方防火墙

2.2.2 在命令提示符中运行命令netstat -a -n,在结果列表里检查是否有类似 tcp 0.0.0.0 1433 listening 的项。

2.2.3 运行命令 telnet 用户名(或IP) 1433 测试对方端口是否畅通

?

第二步 连接客户端

1.建用户帐号
  在服务器端建立域用户帐号(名称为客户端机器名)
  ?? 右击我的电脑->管理->本地用户和组->用户->右击选“新用户”

这里新建的用户名为:PHOENIX(应为客房端机器名) 密码:a(这里要设个密码,若为空可能连不上)


2.重新启动服务器MSSQLServer
  我的电脑->控制面版->管理工具->服务->MSSQLServer 服务->右击,“停止”
  在登录属性页中更改为:域用户帐号PHOENIX

用户 .\ phoenix

密码:a

->再启动服务

3.注册客户端

SQL企业管理器->SQL Server组->右键->新建SQL注册->下一步->可用的服务器中选”PHOENIX”添加->下一步->管理员给我分配的……->下一步->登录名:sa;密码:空->下一步….下一步->完成

?

4.安装分发服务器

4.1配置分发服务器
工具->复制->配置发布、订阅服务器和分发->下一步 (所有的均采用默认配? 置)……->完成

?

  4.2配置发布服务器
-------------------------------------------------------------------------------------------------
一 配置发布服务器

在发布服务器上执行以下步骤:

(1) 从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导
(2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器
(3) [下一步] 设置快照文件夹
一般采用默认\\servername\d$\Program Files\Microsoft SQL Server\MSSQL\ReplData
**(4) [下一步] 自定义配置
可以选择:
是,让我设置分发数据库属性启用发布服务器或设置发布设置
否,使用下列默认设置

建议采用自定义设置
(5) [下一步] 设置分发数据库名称和位置 采用默认值
(6) [下一步] 启用发布服务器 选择作为发布的服务器
(7) [下一步] 选择需要发布的数据库和发布类型
(8) [下一步] 选择注册订阅服务器
(9) [下一步] 完成配置


二 创建出版物

发布服务器上
(1)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令
(2)选择要创建出版物的数据库,然后单击[创建发布]
(3)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。
对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)

(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,
SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。
但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器

(5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表

注意: 如果前面选择了事务发布 则再这一步中只能选择带有主键的表


(6)选择发布名称和描述

**(7)自定义发布属性

向导提供的选择:
是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性
否 根据指定方式创建发布

建议采用自定义的方式

(8)[下一步] 选择筛选发布的方式
(9)[下一步] 可以选择是否允许匿名订阅

1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器
方法: [工具]->[复制]->[配置发布、订阅服务器和分发的属性]->[订阅服务器] 中添加

否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅
如果仍然需要匿名订阅则用以下解决办法
[企业管理器]->[复制]->[发布内容]->[属性]->[订阅选项] 选择允许匿名请求订阅

2)如果选择匿名订阅,则配置订阅服务器时不会出现以上提示


(10)[下一步] 设置快照 代理程序调度
(11)[下一步] 完成配置


当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。


三 订阅服务器的配置


(一) 强制订阅的配置
在发布服务器上
[企业管理器]->[复制]->[发布内容]->[属性]->[订阅]->[强制新建]
然后出现强制订阅向导
选择订阅服务器->订阅数据库名->设置分发代理程序调度->初始化订阅->启动要求的服务
(发布服务器的agent要启动)->完成即可

(二) 请求订阅的配置

订阅服务器上执行以下操作

(1) 从[工具]下拉菜单中选择[复制]子菜单的[请求订阅]
(2) 选择[请求新订阅] 打开请求订阅向导
(3) [下一步]选择已注册的发布
(4) [下一步]选择创建订阅的数据库
(5) [下一步]选择匿名订阅或署名订阅
(6) [下一步] 初始化订阅 选择初始化架构和数据
(7) [下一步]选择快照文件的存放位置 一般采用发布服务器的默认快照文件夹
**(8) [下一步]设置分发代理程序调度 可以选择订阅更新内容的间隔
(9) [下一步]系统会提示检查发布服务器的代理服务的运行状态
(10) [下一步] 完成配置



完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?
这里可以通过这种方法来快速看是否成功。
展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——
状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,
每一分钟,在0:00:00和23:59:59之间。
接下来就是判断复制
是否成功了打开C:\Program Files\Microsoft SQL Server\MSSQL
\REPLDATA\unc\XIAOWANGZI_database_database
下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。
要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表
hery2002 2008-08-03
  • 打赏
  • 举报
回复
各个分库的数据要汇总到中心数据库的一个数据库中....
而且ID之类的还有重复.....
这个估计要适用SSIS写脚本来完成,,,,
hery2002 2008-08-03
  • 打赏
  • 举报
回复
相当于做数据集成平台?

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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