SQL Server两数据库对比更改情况

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41984953/article/details/91414673

SQL Server两数据库对比更改情况

数据库更改对比一定会用到sqlserver的系统库以下是sqlserver系统表的详情:https://www.cnblogs.com/asdcer/archive/2007/05/14/746377.aspx#Top

–新增字段:
select object_name(id),name
from 数据库A…syscolumns
where name not in(select name from 数据库B…syscolumns)
and id in(select id from 数据库B…sysobjects where xtype=‘u’)
order by object_name(id)

–修改长度字段:
select object_name(a.id),a.name,a.length,b.length from 数据库A…syscolumns a,数据库B…syscolumns b
where a.id=b.id and a.name=b.name and a.length<>b.length order by object_name(a.id)

–新增数据表:
select * from 数据库A…sysobjects
where name not in( select name from 数据库B…sysobjects) and xtype=‘U’

–新增存储过程:
select * from 数据库A.sys.procedures
where name not in(select name from 数据库B.sys.procedures) order by name

–修改过的存储过程:
select * from 数据库A.sys.procedures
where name in(select name from 数据库B.sys.procedures) and modify_date>‘2018-07-05’ order by name

–新增视图
select * from test…sysobjects
where name not in( select name from logistics…sysobjects) and xtype=‘V’

字段分析:
object_name(id):数据库中每个对像都有一个唯一的ID值,用Object_name(id)可以根据ID值得到对像的名称,object_id(name)可以根据对像名称得到对象的ID

SQL Server 中系统视图sysobjects中type字段的说明如下:
对象类型:
AF = 聚合函数 (CLR) C = CHECK 约束 D = DEFAULT(约束或独立)
F = FOREIGN KEY 约束 FN = SQL 标量函数 FS = 程序集 (CLR) 标量函数
FT = 程序集 (CLR) 表值函数 IF = SQL 内联表值函数 IT = 内部表
P = SQL 存储过程 PC = 程序集 (CLR) 存储过程 PG = 计划指南
PK = PRIMARY KEY 约束 R = 规则(旧式,独立) RF = 复制筛选过程
S = 系统基表 SN = 同义词 SQ = 服务队列
TA = 程序集 (CLR) DML 触发器 TF = SQL 表值函数 TR = SQL DML 触发器
U = 表(用户定义类型) UQ = UNIQUE 约束 V = 视图 X = 扩展存储过程

数据库B…sysobjects:在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。
数据库B.sys.procedures:于同类过程并且 sys.objects.type = P、X、RF 和 PC 的每个对象对应一行。
有关数据库B.sys.procedures可以查看:
https://blog.csdn.net/weixin_40444678/article/details/81081951

如果单纯比较数据库两表是否相同请看另一篇文章
https://blog.csdn.net/qq_41984953/article/details/91417244

文章如有错误请指出

猜你喜欢

转载自blog.csdn.net/qq_41984953/article/details/91414673