顶级干货
用来比较两个数据库之间 表结构,存储过程及视图差异的存储过程,直接复制对应的存储过程,无需改动,直接在数据库中执行(传递要比较的数据库参数)即可
1.两个数据库之间存储过程及视图差异比较的存储过程
--测试脚本 --exec [p_compSPAndView] 'FAMS_PrePROD','FAMS_SIT' SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE?proc [dbo].[p_compSPAndView] @db1 sysname, --第一个库 @db2 sysname --第二个库 as exec(' select 类型=case isnull(a.xtype,b.xtype) when ''V'' then N''视图'' else N''存储过程'' end ,匹配情况=case when a.name is null then N''库 ['+@db1+'] 中无'' when b.name is null then N''库 ['+@db2+'] 中无'' else N''结构不同'' 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 类型,匹配情况,对象名称 GO