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

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

文章如有错误请指出

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值