两个数据库比较 对比视图存储过程及表结构差异

本文探讨了如何使用SQL Server的系统表对比数据库中的视图、存储过程及其表结构差异。通过查询sysobjects等系统表,详细阐述了比较原理,并提供了具体的执行结果和代码示例。

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

               

一、视图和存储过程比较

【原理】利用系统表“sysobjects"和系统表“syscomments”,将数据库中的视图和存储过程进行对比。系统表"sysobjects"之前有详细介绍过,有兴趣可以看看:SQL Server系统表sysobjects介绍与使用

width="728" height="90" id="aswift_0" scrolling="no" vspace="0" hspace="0">【代码】
/*--调用示例
exec p_compdb 'DBNAME1','DBNAME2'
exec p_compdb 'DBNAME2','DBNAME3'
--*/
 
CREATE  proc p_compdb
@db1 sysname, --第一个库
@db2 sysname --第二个库
as
exec ( '
select 类型=case isnull(a.xtype,b.xtype) when ' 'V' ' then ' '视图' ' else ' '存储过程' ' end
,匹配情况=case
when a.name is null then ' '库 [' +@db1+ '] 中无' '
when b.name is null then ' '库 [' +@db2+ '] 中无' '
else ' '结构不同' ' end
,对象名称=isnull(a.name,b.name),a.text as atext, b.text as btext
from(
select a.name,a.xtype,b.colid,b.text
from [' +@db1+ ']..sysobjects a,[' +@db1+ ']..syscomments b
where a.id=b.id and a.xtype in(' 'V' ',' 'P' ') and a.status>=0
)a full join(
select a.name,a.xtype,b.colid,b.text
from [' +@db2+ ']..sysobjects a,[' +@db2+ ']..syscomments b
where a.id=b.id and a.xtype in(' 'V' ',' 'P' ') and a.status>=0
)b on a.name=b.name and a.xtype=b.xtype and a.colid=b.colid
where a.name is null
or b.name is null
or isnull(a.text,' '' ') <>isnull(b.text,' '' ')
--group by a.name,b.name,a.xtype,b.xtype
--order by 类型,匹配情况,对象名称' )

【执行结果】

 

二、数据表结构比较

【原理】利用系统表“sysobjects"、"sysindexes"、"sysindexkeys"、“syscomments”、"sysclumns"、"systypes"、"extended_properties",将数据库中的表结构进行对比。(涉及到系统表比较多。就不一一介绍。直接上代码。)

【代码】

/*--比较两个数据库的表结构差异--*/
  
/*--调用示例
exec p_comparestructure 'DBNAME1','DBNAME2'
exec p_comparestructure 'DBNAME2','DBNAME3'
--*/
create  proc p_comparestructure
@dbname1 varchar (250), --要比较的数据库名1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值