您当前的位置:首页 > 电脑百科 > 数据库 > SQL Server

SQL SERVER 比较两个数据库的差异性

时间:2022-09-12 14:57:51  来源:今日头条  作者:中年农码工

有时候部署服务器正式版与测试版数据库的时候

总会有人忘记某些字段同步更新的问题

不管是字段类型 或是字段名称. 然后等待着的就是一堆的错误日志.

所以一直想找一款可以查找数据库差异性的脚本或软件

运行以下SQL语句,查看数据库差异性

-- 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


Tags:SQL SERVER   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
使用 Python 连接 SQL Server 数据库并实时读取数据?
实时读取SQL Server数据库表并进行处理是一个常见的需求。在Python中,可以使用pyodbc库来连接SQL Server数据库,并使用pandas库来进行数据处理。下面是一个实战示例,演示如何实...【详细内容】
2023-12-28  Search: SQL SERVER  点击:(93)  评论:(0)  加入收藏
数据库迁移:从 SQL Server 到 PostgreSQL
作者 | 何蔚一、背景在这个数字化时代,企业的复杂业务逻辑运转需要依赖复杂的业务服务来完成。这些业务服务通常会经历变更、拆分、合并和上云等过程,最终与一些商业软件和云...【详细内容】
2023-11-29  Search: SQL SERVER  点击:(237)  评论:(0)  加入收藏
SQL Server 百万数据查询优化技巧三十则
互联网时代的进程越走越深,使用MySQL的人也越来越多,关于MySQL的数据库优化指南很多,而关于SQL SERVER的T-SQL优化指南看上去比较少,近期有学习SQLSERVER的同学问到SQL SERVER数...【详细内容】
2023-11-28  Search: SQL SERVER  点击:(340)  评论:(0)  加入收藏
如何解决SQL Server数据库备份过程中检测到的日志损坏问题
译者 | 李睿日志损坏问题通常发生在对事务日志进行备份的时候。其错误是这样描述的:“消息26019,级别16,状态1,第1行BACKUP在数据库日志中检测到损坏。有关详细信息,请查看错误日...【详细内容】
2023-11-08  Search: SQL SERVER  点击:(292)  评论:(0)  加入收藏
如何在 SQL Server 中备份和恢复数据库
在SQL Server中,数据库可以存储在不同的文件和文件组中。如果您的数据库较小(100 MB 或更少),则无需过多担心文件和文件组。但如果您有一个大型数据库(数 GB 或 TB),将数据分离到不...【详细内容】
2023-09-05  Search: SQL SERVER  点击:(269)  评论:(0)  加入收藏
linux上SQL Server 配置管理器的使用
概述我们知道Windows平台上的SQL Server 配置管理器是一个图形工具,用于管理与 SQL Server 关联的服务、配置 SQL Server 使用的网络协议以及管理 SQL Server 客户端计算机的...【详细内容】
2023-08-24  Search: SQL SERVER  点击:(306)  评论:(0)  加入收藏
Linux 上 SQL Server 配置管理器的使用
概述我们知道Windows平台上的SQL Server 配置管理器是一个图形工具,用于管理与 SQL Server 关联的服务、配置 SQL Server 使用的网络协议以及管理 SQL Server 客户端计算机的...【详细内容】
2023-08-21  Search: SQL SERVER  点击:(124)  评论:(0)  加入收藏
python如何操作SQL Server数据库?
当使用Python与SQL Server进行交互时,可以使用不同的库和模块。以下是25个示例代码,用于演示如何使用Python与SQL Server进行连接、查询、插入、更新和删除等操作:使用pyodbc库...【详细内容】
2023-08-15  Search: SQL SERVER  点击:(297)  评论:(0)  加入收藏
SQL Server关系数据库在Linux系统上安装及配置
SQL Server是由Microsoft开发的关系型数据库管理系统(RDBMS)。它是一种可靠、安全且高性能的数据库解决方案,用于存储、管理和处理大量结构化数据。SQL Server支持标准的SQL查...【详细内容】
2023-08-15  Search: SQL SERVER  点击:(242)  评论:(0)  加入收藏
SQL Server数据库常见操作及命令
创建数据库:CREATE DATABASE database_name;删除数据库:DROP DATABASE database_name;创建表:CREATE TABLE table_name ( column1 datatype, column2 datatype, ...);删除...【详细内容】
2023-08-15  Search: SQL SERVER  点击:(229)  评论:(0)  加入收藏
▌简易百科推荐
SQL Server 百万数据查询优化技巧三十则
互联网时代的进程越走越深,使用MySQL的人也越来越多,关于MySQL的数据库优化指南很多,而关于SQL SERVER的T-SQL优化指南看上去比较少,近期有学习SQLSERVER的同学问到SQL SERVER数...【详细内容】
2023-11-28  数据库干货铺  微信公众号  Tags:SQL Server   点击:(340)  评论:(0)  加入收藏
如何解决SQL Server数据库备份过程中检测到的日志损坏问题
译者 | 李睿日志损坏问题通常发生在对事务日志进行备份的时候。其错误是这样描述的:“消息26019,级别16,状态1,第1行BACKUP在数据库日志中检测到损坏。有关详细信息,请查看错误日...【详细内容】
2023-11-08    51CTO  Tags:SQL Server   点击:(292)  评论:(0)  加入收藏
聊聊SQL中的排名问题
今天给大家介绍一下SQL Server排名中经常用到的ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()这四个好兄弟。 我们先创建一个测试数据表ScoresWITH t AS(SELECT 1 StuID,70 ScoreU...【详细内容】
2023-10-26  SQL数据库开发  微信公众号  Tags:SQL   点击:(177)  评论:(0)  加入收藏
数据库批量插入数据方法
SQL Server 批量插入数据常用方法:一、普通的Insert插入二、拼接BatchInsert插入三、SqlBulkCopy插入 以上3种方法插入数据的速度比较:(ms:毫秒,1000 毫秒 = 1秒)由于电脑硬件情况...【详细内容】
2023-10-17      Tags:数据库   点击:(252)  评论:(0)  加入收藏
如何在 SQL Server 中备份和恢复数据库
在SQL Server中,数据库可以存储在不同的文件和文件组中。如果您的数据库较小(100 MB 或更少),则无需过多担心文件和文件组。但如果您有一个大型数据库(数 GB 或 TB),将数据分离到不...【详细内容】
2023-09-05  祺印说信安  微信公众号  Tags:SQL Server   点击:(269)  评论:(0)  加入收藏
linux上SQL Server 配置管理器的使用
概述我们知道Windows平台上的SQL Server 配置管理器是一个图形工具,用于管理与 SQL Server 关联的服务、配置 SQL Server 使用的网络协议以及管理 SQL Server 客户端计算机的...【详细内容】
2023-08-24    雪竹频道  Tags:SQL Server   点击:(306)  评论:(0)  加入收藏
Linux 上 SQL Server 配置管理器的使用
概述我们知道Windows平台上的SQL Server 配置管理器是一个图形工具,用于管理与 SQL Server 关联的服务、配置 SQL Server 使用的网络协议以及管理 SQL Server 客户端计算机的...【详细内容】
2023-08-21  雪竹聊技术  今日头条  Tags:SQL Server   点击:(124)  评论:(0)  加入收藏
python如何操作SQL Server数据库?
当使用Python与SQL Server进行交互时,可以使用不同的库和模块。以下是25个示例代码,用于演示如何使用Python与SQL Server进行连接、查询、插入、更新和删除等操作:使用pyodbc库...【详细内容】
2023-08-15  运维开发木子李  今日头条  Tags:SQL Server   点击:(297)  评论:(0)  加入收藏
SQL Server关系数据库在Linux系统上安装及配置
SQL Server是由Microsoft开发的关系型数据库管理系统(RDBMS)。它是一种可靠、安全且高性能的数据库解决方案,用于存储、管理和处理大量结构化数据。SQL Server支持标准的SQL查...【详细内容】
2023-08-15  运维开发木子李  今日头条  Tags:SQL Server   点击:(242)  评论:(0)  加入收藏
SQL Server数据库常见操作及命令
创建数据库:CREATE DATABASE database_name;删除数据库:DROP DATABASE database_name;创建表:CREATE TABLE table_name ( column1 datatype, column2 datatype, ...);删除...【详细内容】
2023-08-15  运维开发木子李  今日头条  Tags:SQL Server   点击:(229)  评论:(0)  加入收藏
站内最新
站内热门
站内头条