`
robotmen
  • 浏览: 55673 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

SQL SERVER 比较两个数据库中表和字段的差异

 
阅读更多

对比两个数据库,执行如下SQL语句,如下SQL语句中INTFSIMSNEW 表示新数据库(线上数据库,也就是刚刚第二步新建的数据库),INTFSIMS 表示旧数据库(本地数据库),将如下SQL语句中所有 INTFSIMSNEW 替换成你新建的数据库名称,INTFSIMS 替换成你本地的数据库名称

 

-- u表,p存储过程,v视图
-- INTFSIMSNEW新库,INTFSIMS旧库

SELECT NTABLE = A.NAME, OTABLE = B.NAME
FROM INTFSIMSNEW..SYSOBJECTS A
  LEFT JOIN INTFSIMS..SYSOBJECTS B
    ON A.NAME = B.NAME
WHERE ISNULL(B.NAME, '') = ''
  AND A.XTYPE = 'U'

UNION ALL

SELECT NTABLE = B.NAME, OTABLE = A.NAME
FROM INTFSIMS..SYSOBJECTS A
  LEFT JOIN INTFSIMSNEW..SYSOBJECTS B
    ON A.NAME = B.NAME
WHERE ISNULL(B.NAME, '') = ''
  AND A.XTYPE = 'U'
ORDER BY 1, 2

-- 比较两个数据库中每个表字段的差异
SELECT
  表名A = CASE WHEN ISNULL(A.TABLENAME, '') <> '' THEN A.TABLENAME ELSE B.TABLENAME END,
  字段名A = A.FIELDNAME,
  字段名B = B.FIELDNAME,
  顺序= A.FIELDSNO,
  说明= CASE WHEN A.FIELDTYPE <> B.FIELDTYPE THEN '类型: ' + A.FIELDTYPE + '-->' + B.FIELDTYPE
              WHEN A.FIELDSNO <> B.FIELDSNO THEN '顺序: ' + str(A.FIELDSNO) + '-->' + str(B.FIELDSNO)
              WHEN A.LENGTH <> B.LENGTH THEN '长度: ' + str(A.LENGTH) + '-->' + str(B.LENGTH)
              WHEN A.LENSEC <> B.LENSEC THEN '小数位: ' + str(A.LENSEC) + '-->' + str(B.LENSEC)
              WHEN A.ALLOWNULL <> B.ALLOWNULL THEN '允许空值: ' + str(A.ALLOWNULL) + '-->' + str(B.ALLOWNULL)
         END
FROM (SELECT
        TABLENAME = B.NAME,
        FIELDNAME = A.NAME,
        FIELDSNO = A.COLID,
        FIELDTYPE = C.NAME,
        LENGTH = A.LENGTH,
        LENSEC = A.XSCALE,
        ALLOWNULL = A.ISNULLABLE
      FROM INTFSIMSNEW..SYSCOLUMNS A
        LEFT JOIN INTFSIMSNEW..SYSOBJECTS B
          ON A.ID = B.ID
        LEFT JOIN INTFSIMSNEW..SYSTYPES C
          ON A.XUSERTYPE = C.XUSERTYPE
      WHERE B.XTYPE = 'U') A
  FULL JOIN (SELECT
               TABLENAME = B.NAME,
               FIELDNAME = A.NAME,
               FIELDSNO = A.COLID,
               FIELDTYPE = C.NAME,
               LENGTH = A.LENGTH,
               LENSEC = A.XSCALE,
               ALLOWNULL = A.ISNULLABLE
             FROM INTFSIMS..SYSCOLUMNS A
               LEFT JOIN INTFSIMS..SYSOBJECTS B
                 ON A.ID = B.ID
               LEFT JOIN INTFSIMS..SYSTYPES C
                 ON A.XUSERTYPE = C.XUSERTYPE
             WHERE B.XTYPE = 'U') B
    ON A.TABLENAME = B.TABLENAME
      AND A.FIELDNAME = B.FIELDNAME
WHERE ISNULL(A.TABLENAME, '') = ''
  OR ISNULL(B.TABLENAME, '') = ''
  OR A.FIELDTYPE <> B.FIELDTYPE
  OR A.FIELDSNO <> B.FIELDSNO
  OR A.LENGTH <> B.LENGTH
  OR A.LENSEC <> B.LENSEC
  OR A.ALLOWNULL <> B.ALLOWNULL
ORDER by 1, 4

分享到:
评论

相关推荐

    自动对比2个数据库表结构差异

    有时候,我们可能需要对比两个数据库的表结构差异,比如在升级系统、迁移数据或进行数据库同步时。本篇将深入探讨如何自动对比两个数据库表结构的差异,并提供一个名为`compareTableStructure`的实用工具来辅助这一...

    SQL Server数据库中的表名称、字段比较

    在提供的代码片段中,可以看到一个简单的控制台应用程序,它使用ADO.NET连接到SQL Server并获取两个数据库(ttPRD和ttQAS)的表信息。`GetTableNames`方法执行了一个SQL查询,从`Information_Schema.Tables`系统视图...

    SQL 比对工具,更好比较两个数据库的差异

    SQL比对工具就是为此目的而设计的专业软件,它们能够帮助开发者和DBA快速、准确地识别并解决两个数据库之间的差异。本文将深入探讨SQL比对工具的功能、用途、工作原理以及如何有效地利用这些工具来优化数据库管理。 ...

    比较SQLSERVER数据库差异

    DBCompare.exe可能是一个用于执行此类比较的工具,它能帮助用户识别两个数据库实例中的表结构差异,并提供详细的报告。 接着,我们转向“触发器”的对比。触发器是预定义的数据库操作响应,当特定的DML(INSERT、...

    sql Server 数据库对比工具

    表结构对比是数据库对比的核心功能之一,它允许用户比较两个数据库中表的字段数量、类型、主键、外键、索引等属性的差异。这对于在升级、迁移或合并数据库时确保数据一致性至关重要。 3. **存储过程对比**: 存储...

    Navicat客户端sqlserver表结构转到mysql数据库中操作文档

    在Navicat中,你可以通过“新建连接”创建两个数据库的连接,输入相应的服务器地址、用户名、密码和端口号。 接下来,进行表结构迁移的具体步骤: 1. **导出SQL Server的表结构**: 在Navicat中,选择SQL Server...

    SQLserver 数据库表结构对比工具

    1. **全方位对比**:该工具能全面比较两个数据库的表结构,包括字段数量、字段类型、字段长度、主键、外键、索引、触发器等所有细节,确保对比无遗漏。 2. **批量更新**:一旦发现结构差异,用户可以选择一键批量...

    对比2个数据库的差异

    本文将深入探讨如何对比两个数据库的表差异、字段差异,并关注表名、字段名、字段属性、字段长度以及是否允许空值等关键维度。此外,我们还将讨论如何将这些对比结果导出到Excel中,以便进行进一步的数据分析和处理...

    数据库数据对比工具(珍藏MSSQL版)

    数据库数据对比工具(MSSQL版)是针对MS SQL Server的一款小工具,可以针对两个数据进行表结构和...2、数据对比:如对比两个数据库中的某个表的数据差异,有差异的行会用颜色进行标记,可生成sql脚本进行两个库的同步。

    SQLSERVER数据库结构比较工具

    本篇文章将深入探讨"SQLSERVER数据库结构比较工具"及其在比较两个数据库之间表差异和字段差异方面的应用。 首先,我们要理解数据库结构比较的基本概念。数据库结构主要包括表、视图、索引、存储过程、触发器等对象...

    比对两个数据库中表的差异

    在实际工作中,我们经常遇到需要比较两个数据库中表的差异的情况,这可能是为了数据迁移、备份恢复、版本升级或故障排查等目的。本文将深入探讨如何有效地比对两个数据库中表的差异,并提供相关策略和技术。 首先,...

    两个数据库表结构比较(C#)

    表结构比较的目标是找出两个数据库之间的差异,这可能涉及到表的增删改,或者字段属性的变更,如字段类型、长度、是否允许空值等。 描述中提到的“第一个数据库中有而第二个没有”,这可能意味着在一个数据库中存在...

    SQLSERVER数据库对比工具

    1. **数据库结构对比**:该工具可以详细分析并展示两个数据库的表结构、字段、主键、外键、索引等对象的异同。这在数据库升级、迁移或重构过程中非常有用,能确保新旧结构的对应性。 2. **数据对比**:除了结构对比...

    对比两个数据库的字段是否一致 源码 (可对比两个数据库的一个或多个表或者所有表)

    标题和描述提到的"对比两个数据库的字段是否一致"是一项常见的任务,它可以帮助我们检查两个数据库中的表结构、字段数量以及字段属性是否匹配。这个任务可以通过编写特定的源码来实现,下面我们将详细讨论这个过程。...

    SqlServer数据库结构比较工具

    1. 表结构比较:该工具能够对比两个SQL Server数据库中的表结构,包括字段名、字段类型、主键、外键、索引等信息,帮助用户发现并修正结构差异。 2. 存储过程对比:比较存储过程的定义,检查不同数据库间的代码差异...

    sqlserver2005、2008数据库对较器

    1. **结构比较**:数据库对较器可以分析两个数据库的表、视图、存储过程、触发器、函数等对象的定义,找出它们之间的差异。这对于检查数据库设计的更改或确认迁移的准确性至关重要。 2. **数据比较**:除了结构,...

    SQLServer数据库比较工具

    SQLServer数据库比较工具是一款专为SQL Server设计的强大实用程序,旨在帮助数据库管理员和开发者高效地对比和同步两个数据库的结构。这款工具的核心功能是通过分析指定的“标准”数据库和“待测”数据库,找出两者...

    sqlserver无主键表的同步方案1

    这个脚本的工作原理是对源表和目标表进行比较,识别出列的增减,并根据这些差异执行相应的DML操作(插入、更新、删除)。这个过程通过一个存储过程实现,名为`SyncDBNoKeyTables`,它接受源数据库和目标数据库的名称...

    数据库数据对比工具(MSSQL版)

    数据库数据对比工具(MSSQL版)是针对MS SQL Server的一款小工具,可以针对两个数据进行表结构和...2、数据对比:如对比两个数据库中的某个表的数据差异,有差异的行会用颜色进行标记,可生成sql脚本进行两个库的同步。

    数据库对比工具(支持sqlserver ,oracle)

    1. 结构比较:工具可以深入比较两个数据库的表结构,包括字段名、数据类型、主键、外键、索引等元素,帮助用户发现潜在的不一致性和冲突。 2. 视图比较:除了表之外,视图也是数据库中重要的组成部分。工具会检查...

Global site tag (gtag.js) - Google Analytics