none
SQL Server 2005 合并两个数据库 RRS feed

  • 问题

  •         有什么方法,可以在SQL Server 2005 中合并两个数据库。已经在在网上找了很久,没有解决,请具体指教。

    谢谢。

     

     

     


     

     

    visual studio 2008

    SQL Server 2005

    2010年8月11日 14:40

答案

  • 你首先要定义合并规则, 至少包括:

    1. 要合并的对象类型及列表

    2. 同名对象如何处理?  比如, 对于表同名, 如果结构一样, 假如是将数据合并到一齐, 但如果有相同数据又如何处理(相同数据的判断标准又是什么?)

    在合并规则定义好的情况下, 才是决定如何合并, 简单的导只是处理表对象, 当存在对象名称冲突的时候, 没有合并规则就没有办法决定如何来导数据.

    2010年8月13日 4:42

全部回复

  • SQLSERVER没有这样的功能. 根据需求自己写脚本吧.


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    2010年8月11日 16:18
    版主
  • Maybe merge replication or peer to peer replication.
    2010年8月11日 19:29
  • 1.如果没有相同的表和对象名称,这个最简单,直接用导入导出,将一个库的表全部导入过来,存储过程,视图等也可以通过脚本备份出来后,再在目标库上执行即可。

    2.如果有相同的表或者对象,这个就需要有一个详细的迁移方案了,你需要将那些是可以合并,那些是要改名,那些是直接可以导入过来都标记好,然后分别写成脚本,然后在一个一个迁移。这个比较辛苦

    3.还有一种情况,就是2个库结构一样,只是数据不一样,这个也不麻烦,和1类似,不同的是不需要导入对象(表等),麻烦的是你需要考虑是否有些表有重复数据(如果有约束),你需要把重复数据剔除后导入。

    导入的方式,你可以将2个库都恢复到一个机器上或者使用连接数据库来完成。

    迁移的如果涉及比较多的内容,可以使用SSIS来做。2005后这个已经很强大。

     


    family as water
    2010年8月12日 1:53
  • 导入导出的方法,我已经试过,好像不行,网上也有很多说的,但是行不通,能否具体指教??


    visual studio 2008
    2010年8月12日 3:03
  • Do those dbs have same schema? Can you post some details of what you want to do with details?
    2010年8月12日 3:12
  • 若不熟悉,还是找个熟悉SQL SERVER的人代劳吧。。。从零折腾,何日结案呢
    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    2010年8月12日 3:59
  • >>导入导出的方法,我已经试过,好像不行,网上也有很多说的,但是行不通,能否具体指教??

    “好像不行”具体是指? 有没有错误信息?

     

     


    Microsoft Online Community Support Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2010年8月13日 2:35
    版主
  • 你首先要定义合并规则, 至少包括:

    1. 要合并的对象类型及列表

    2. 同名对象如何处理?  比如, 对于表同名, 如果结构一样, 假如是将数据合并到一齐, 但如果有相同数据又如何处理(相同数据的判断标准又是什么?)

    在合并规则定义好的情况下, 才是决定如何合并, 简单的导只是处理表对象, 当存在对象名称冲突的时候, 没有合并规则就没有办法决定如何来导数据.

    2010年8月13日 4:42
  • 如果2个库的表名字段都一样,只是表中的数据不同。可以用BCP将一个数据库中的所有数据导出,

    导出的时候注意是本机格式导出还是字符型格式导出。

    比如:计算机名:ABCD 数据库:DATABASE1 DATABASE2 需要将DATABSE1的数据导入到DATABASE2中。先将DATABASE1中的数据导出到D盘根目录,可以用下面的方法

    SELECT REPLACE('bcp DATABASE1..#table_name# out D:\#table_name#.dat -n -q -SABCD -T -b3000', '#table_name#', name) AS cmd FROM sys.sysobjects WHERE (type = 'u')

    执行后会产生DATABASE1库上面所有表的导出脚本 CMD方式下转到D盘执行脚本 在用同样的方式导入到DATABASE2上即可


    凡人有庸俗的快乐,智者有高尚的痛苦
    2010年8月16日 8:59