一般数据库软件的开发都是首先在开发数据库上进行,开发到一定程度后,系统投入运行,此时软件处于维护阶段。维护到一定时期,开发库和运行库之间出现了一些差异,还有一种情况就是如果应用在很多地方同时使用,每次的后台升级,哪些数据库作了升级,哪些还没有作升级,如果没有详细记录的话,也会造成我们的尴尬事情。Oracle中有工具可用来比较两个数据库间的差异。
SQLServer 2000中有吗?

解决方案 »

  1.   

    我看到过一个软件好象就是叫sql compare,但是国外的软件,估计是要银子的。
    有没有免费下载的我没注意看,你到网上按这个名字搜一下。
    自己写语句做是比较麻烦的,但肯定是可以做的。
      

  2.   

    我觉得做数据库是最好还是自己建一个表(内容包括所用到的表名,用途,表中字段的信息等)并把对表的维护和更新都记录在其中。下面给的语句将在两个数据库中不同的表名选出
    select [name] from 
    (select [name] from database1.dbo.sysobjects 
    where xtype='u' and [name] not in 
    (select [name] from database2.dbo.sysobjects where xtype='u') 
    )
    as table1
    union
    (select [name] from database2.dbo.sysobjects 
    where xtype='u' and [name] not in 
    (select [name] from database1.dbo.sysobjects where xtype='u') 
    )至于相同表名中有差异的字段我不明白你是指字段名不一样还是字段名相同但类型不同或长度等不同
    以下是选出两个库中相同的表:
    select [name] from database1.dbo.sysobjects 
    where xtype='u' and [name] in (select [name] from database2.dbo.sysobjects where xtype='u')
    具体判断字段的不同你自己按实际需要再加将语句完善。
    可能要参考的系统表有
    syscolumns(字段)
    systypes(字段类型)
      

  3.   

    http://www.red-gate.com/sql_tools.htm
    可以下载的,试试吧,我还没用过:)
      

  4.   

    可以试试数据库建模软件Erwin,先将其中的一个数据库进行”反向工程“将其转变成对应的模型,再将该模型利用其中的一个“比较功能”与另一个数据库进行比较,其差别可以一目了然,而且可以进行相互的导入,导出,非常方便,不妨一试,hehe。
      

  5.   

    http://www.mssqlserver.com/products/sqlcompare101_p1.asp沒找到免費下載的地方。:(
      

  6.   

    TO: icevi(按钮工厂) 
    下载试了,
    当两表结构完全相同由于字段排列位置有出入则比较的结果显示为不同TO: fflxg(动力火车) 
    好的,有空试,问一下powerdesigner支持"反向工程"不?TO: jinfeng_wang(G-G-S,D-D-U)
     引"你在联机帮助里面用INFORMATION_SCHEMA就看到了
        自己写一些代码吧! 已经不是太难了"呵呵,不好意思,还是不会 :)