分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!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
|
本文探讨了如何使用SQL Server的系统表对比数据库中的视图、存储过程及其表结构差异。通过查询sysobjects等系统表,详细阐述了比较原理,并提供了具体的执行结果和代码示例。

6032

被折叠的 条评论
为什么被折叠?



