您当前的位置:首页 > 电脑百科 > 数据库 > 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   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
概述在某些情况下,我们希望从外部数据库中获取数据,而无需在应用程序中进行额外编码,只需编写一个 T-SQL 查询即可为我们完成所有工作。这就是微软提供的“链接服务器”功能的...【详细内容】
2022-10-30  Tags: SQL SERVER  点击:(8)  评论:(0)  加入收藏
因服务器安装的SQL Server版本不支持自动定时备份,需自行实现,大概思路为:创建备份数据库的脚本创建批处理脚本执行步骤一中的脚本创建Windows定时任务执行步骤二中的脚本1. 创...【详细内容】
2022-10-20  Tags: SQL SERVER  点击:(25)  评论:(0)  加入收藏
有时候部署服务器正式版与测试版数据库的时候总会有人忘记某些字段同步更新的问题不管是字段类型 或是字段名称. 然后等待着的就是一堆的错误日志.所以一直想找一款可以查找...【详细内容】
2022-09-12  Tags: SQL SERVER  点击:(59)  评论:(0)  加入收藏
步骤一:设置sql server数据库1.以新建一个新用户名test作为远程连接登录名。在本地登录sql server数据库,安全性->右键用户名 2.点击根目录右键,选择属性 选择安全性 选...【详细内容】
2022-09-11  Tags: SQL SERVER  点击:(60)  评论:(0)  加入收藏
序本文属于基础知识的回顾,在日常技术交流和日常工作中经常发现有些同事了解关于数据库事务的基本知识,会看SQL语句的执行计划,也知道数据库有X锁、U锁和S锁等各种锁,但是对于这...【详细内容】
2022-09-05  Tags: SQL SERVER  点击:(56)  评论:(0)  加入收藏
MySQL 存储引擎是用插件方式实现的,所以在源码里分为两层:server 层、存储引擎层。server 层负责解析 SQL、选择执行计划、条件过滤、排序、分组等各种逻辑。存储引擎层做的事...【详细内容】
2022-03-11  Tags: SQL SERVER  点击:(132)  评论:(0)  加入收藏
关系型数据库是目前最受欢迎的数据库管理系统,技术比较成熟,常见的关系型数据库有mysql 、SQL Server、Oracle、Sybase、DB2等。SQL Server 是Microsoft 公司推出的关系型数据...【详细内容】
2022-02-09  Tags: SQL SERVER  点击:(119)  评论:(0)  加入收藏
背景:客户是地产行业客户,云服务器主要部署OA和sql server数据库,由于内部IT薄弱,没有做好安全防护,导致服务器被病毒入侵。问题回顾:1:服务器遭受勒索病毒攻击,导致服务器OA文件和...【详细内容】
2022-02-08  Tags: SQL SERVER  点击:(98)  评论:(0)  加入收藏
介绍一个SQL Server 2016后新增的功能:查询存储。查询存储的工作原理类似于飞行数据记录器或者黑匣子,不断地收集与查询和计划相关的编译和运行时信息,包括已执行查询的历史记...【详细内容】
2021-08-17  Tags: SQL SERVER  点击:(180)  评论:(0)  加入收藏
众所周知SQL SERVER是微软的数据库拳头产品,有着图形化友好界面、操作门槛低、部署难度小,一键式安装的特点,受到全球开发者及企业的青睐。从历代版本说起,经典2000版本是划时代...【详细内容】
2021-07-19  Tags: SQL SERVER  点击:(265)  评论:(0)  加入收藏
▌简易百科推荐
因服务器安装的SQL Server版本不支持自动定时备份,需自行实现,大概思路为:创建备份数据库的脚本创建批处理脚本执行步骤一中的脚本创建Windows定时任务执行步骤二中的脚本1. 创...【详细内容】
2022-10-20   互联网资讯看板   网易号  Tags:SQL Server   点击:(25)  评论:(0)  加入收藏
有很多朋友也都会误认为:时间戳是一个时间字段,每次增加数据时,填入当前的时间值。其实这误导了很多朋友。时间戳仅仅是个一直在递增的标识版本号,与时间没有任何关系。时间戳...【详细内容】
2022-10-18  i看i想  今日头条  Tags:SQLServer   点击:(22)  评论:(0)  加入收藏
有时候部署服务器正式版与测试版数据库的时候总会有人忘记某些字段同步更新的问题不管是字段类型 或是字段名称. 然后等待着的就是一堆的错误日志.所以一直想找一款可以查找...【详细内容】
2022-09-12  中年农码工  今日头条  Tags:SQL SERVER   点击:(59)  评论:(0)  加入收藏
步骤一:设置sql server数据库1.以新建一个新用户名test作为远程连接登录名。在本地登录sql server数据库,安全性->右键用户名 2.点击根目录右键,选择属性 选择安全性 选...【详细内容】
2022-09-11  互联共商   网易号  Tags:Sql Server   点击:(60)  评论:(0)  加入收藏
序本文属于基础知识的回顾,在日常技术交流和日常工作中经常发现有些同事了解关于数据库事务的基本知识,会看SQL语句的执行计划,也知道数据库有X锁、U锁和S锁等各种锁,但是对于这...【详细内容】
2022-09-05  中年农码工    Tags:SQL Server   点击:(56)  评论:(0)  加入收藏
Javascript无法直接访问SqlServer数据库的,但可以使用浏览器的“执行SQL”功能查询数据库,将查询结果保存在浏览器变量中,然后在Javascript代码中引用这些变量即可。在浏览器的...【详细内容】
2022-07-11  Mutousoft    Tags:Sqlserver   点击:(262)  评论:(0)  加入收藏
关系型数据库是目前最受欢迎的数据库管理系统,技术比较成熟,常见的关系型数据库有mysql 、SQL Server、Oracle、Sybase、DB2等。SQL Server 是Microsoft 公司推出的关系型数据...【详细内容】
2022-02-09  大话数据分析    Tags:SQL Server   点击:(119)  评论:(0)  加入收藏
背景:客户是地产行业客户,云服务器主要部署OA和sql server数据库,由于内部IT薄弱,没有做好安全防护,导致服务器被病毒入侵。问题回顾:1:服务器遭受勒索病毒攻击,导致服务器OA文件和...【详细内容】
2022-02-08  花花公子love    Tags:sql server   点击:(98)  评论:(0)  加入收藏
概述我们知道SQL Server是微软公司推出的重要的数据库产品,通常情况下只支持部署在windows平台上。不过令人感到兴奋的是,从SQL Server 2017开始支持 linux系统。此 SQL Serve...【详细内容】
2021-12-17  雪竹聊运维    Tags:SQLSERVER   点击:(643)  评论:(0)  加入收藏
介绍一个SQL Server 2016后新增的功能:查询存储。查询存储的工作原理类似于飞行数据记录器或者黑匣子,不断地收集与查询和计划相关的编译和运行时信息,包括已执行查询的历史记...【详细内容】
2021-08-17  哈囉克里    Tags:SQL Server   点击:(180)  评论:(0)  加入收藏
站内最新
站内热门
站内头条