判断两个数据库中不一样的表和存储过程

简介:

---两表结构不一样

DECLARE @bigdatabase VARCHAR(20),@smalldatabase VARCHAR(20)
SET @bigdatabase = 'dbf_zhangcun'
SET @smalldatabase = 'dbf_yangting'
DECLARE @sqltext VARCHAR(4000)
SET @sqltext = ' SELECT a.a1,a.a2,a.a3,a.length from '
  + ' (SELECT a.a1,a.a2,a.a3,a.length, b.a1 AS b1,b.a2 AS b2,b.a3 AS b3,b.length AS b4  from '
  + '(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from ' + @bigdatabase + '.sys.syscolumns c '
  + ' inner join ' + @bigdatabase + '.sys.systypes t on c.xtype= t.xtype '
  + ' inner join ' + @bigdatabase + '.sys.sysobjects o on c.id= o.id '
  + ' where   o.xtype=''u'' '
  + ')AS a'
  + ' LEFT JOIN '
  + ' (select o.name AS a1, c.name AS a2,t.name AS a3,c.length from ' + @smalldatabase + '.sys.syscolumns c '
  + ' inner join ' + @smalldatabase + '.sys.systypes t on c.xtype= t.xtype '
  + ' inner join ' + @smalldatabase + '.sys.sysobjects o on c.id= o.id '
  + ' where   o.xtype=''u''' 
  + ' )AS b'
  + ' ON a.a1 = b.a1 AND a.a2 = b.a2 '
  + ' )AS a '
  + ' WHERE a.b1 IS NULL GROUP by a.a1,a.a2,a.a3,a.length '
exec(@sqltext)




----两个数据库所缺表
DECLARE @bigdatabase VARCHAR(20),@smalldatabase VARCHAR(20)
SET @bigdatabase = 'dbf_zhangcun'
SET @smalldatabase = 'dbf_yangting'
DECLARE @sqltext VARCHAR(4000)

SET @sqltext = ' SELECT a.a1 from '
  + '(SELECT a.a1,a.a2,a.a3,a.length, b.a1 AS b1,b.a2 AS b2,b.a3 AS b3,b.length AS b4  from '
  + '(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from ' + @bigdatabase + '.sys.syscolumns c '
  + 'inner join ' + @bigdatabase + '.sys.systypes t on c.xtype= t.xtype'
  + ' inner join ' + @bigdatabase + '.sys.sysobjects o on c.id= o.id'
  + ' where   o.xtype=''u'' '
  + ')AS a'
  + ' LEFT JOIN '
  + '(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from ' + @smalldatabase + '.sys.syscolumns c'
  + ' inner join ' + @smalldatabase + '.sys.systypes t on c.xtype= t.xtype'
  + ' inner join ' + @smalldatabase + '.sys.sysobjects o on c.id= o.id'
  + ' where   o.xtype=''u'' '
  + ' )AS b'
  + ' ON a.a1 = b.a1 '
  + ' )AS a'
  + ' WHERE a.b1 IS NULL GROUP BY a.a1'
exec(@sqltext)

---两个数据库所缺存储过程

DECLARE @bigdatabase VARCHAR(20),@smalldatabase VARCHAR(20)
SET @bigdatabase = 'dbf_zhangcun'
SET @smalldatabase = 'dbf_yangting'
DECLARE @sqltext VARCHAR(4000)

SET @sqltext = ' SELECT a.name,a.b1 from '
  + '('
  + ' SELECT a.name,b.name AS b1 from'
  + '(SELECT a.name FROM ' + @bigdatabase + '.sys.sysobjects AS a WHERE xtype = ''P'')AS a'
  + ' LEFT join'
  + '(SELECT a.name FROM ' + @smalldatabase + '.sys.sysobjects AS a WHERE xtype = ''P'')AS b'
  + ' ON a.name = b.NAME'
  + ')AS a WHERE a.b1 IS NULL'
exec(@sqltext)  



---两表结构不一样
SELECT a.a1,a.a2,a.a3,a.length from
(SELECT a.a1,a.a2,a.a3,a.length, b.a1 AS b1,b.a2 AS b2,b.a3 AS b3,b.length AS b4  from 
(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from dbf.sys.syscolumns c
inner join dbf.sys.systypes t on c.xtype= t.xtype
inner join dbf.sys.sysobjects o on c.id= o.id
where   o.xtype='u' 
)AS a
LEFT JOIN 
(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from hisdb.sys.syscolumns c
inner join hisdb.sys.systypes t on c.xtype= t.xtype
inner join hisdb.sys.sysobjects o on c.id= o.id
where   o.xtype='u' 
)AS b
ON a.a1 = b.a1 AND a.a2 = b.a2
)AS a
WHERE a.b1 IS NULL GROUP by a.a1,a.a2,a.a3,a.length

----两个数据库所缺表
SELECT a.a1 from
(SELECT a.a1,a.a2,a.a3,a.length, b.a1 AS b1,b.a2 AS b2,b.a3 AS b3,b.length AS b4  from 
(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from dbf.sys.syscolumns c
inner join dbf.sys.systypes t on c.xtype= t.xtype
inner join dbf.sys.sysobjects o on c.id= o.id
where   o.xtype='u' 
)AS a
LEFT JOIN 
(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from hisdb.sys.syscolumns c
inner join hisdb.sys.systypes t on c.xtype= t.xtype
inner join hisdb.sys.sysobjects o on c.id= o.id
where   o.xtype='u' 
)AS b
ON a.a1 = b.a1 
)AS a
WHERE a.b1 IS NULL GROUP BY a.a1

---两个数据库所缺存储过程
SELECT a.name,a.b1 from
(
SELECT a.name,b.name AS b1 from
(SELECT a.name FROM dbf.sys.sysobjects AS a WHERE xtype = 'P')AS a
LEFT join
(SELECT a.name FROM hisdb.sys.sysobjects AS a WHERE xtype = 'P')AS b
ON a.name = b.name
)AS a WHERE a.b1 IS null




-----查询同样的两表长度不一样

SELECT a.a1,a.a2,a.a3,a.length,a.b1,a.b2,a.b3,a.b4 from
(SELECT a.a1,a.a2,a.a3,a.length, b.a1 AS b1,b.a2 AS b2,b.a3 AS b3,b.length AS b4  from
(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from dbf.sys.syscolumns c
inner join dbf.sys.systypes t on c.xtype= t.xtype
inner join dbf.sys.sysobjects o on c.id= o.id
where   o.xtype='u' 
)AS a
LEFT JOIN
(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from dbf_sunjiatuan.sys.syscolumns c
inner join dbf_sunjiatuan.sys.systypes t on c.xtype= t.xtype
inner join dbf_sunjiatuan.sys.sysobjects o on c.id= o.id
where   o.xtype='u' 
)AS b
ON a.a1 = b.a1 AND a.a2 = b.a2 
)AS a
WHERE  a.length < a.b4 and a.a1 LIKE 'sf_%'
 GROUP by a.a1,a.a2,a.a3,a.length,a.b1,a.b2,a.b3,a.b4














本文转自鹅倌51CTO博客,原文链接:http://blog.51cto.com/kaixinbuliao/1745015 ,如需转载请自行联系原作者


相关文章
|
6月前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
86 5
|
8月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
79 1
|
8月前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
8月前
|
存储 SQL 数据库
触发器的设计、掌握存储过程的基本概念和创建、执行、删除方法。掌握数据库备份的方法和数据库恢复的方法。
这篇文章介绍了数据库中触发器的设计概念,包括创建、修改、删除触发器的方法,并通过实验内容教授如何使用SQL命令创建DML触发器以及如何利用触发器实现数据的完整性和自动化处理。
触发器的设计、掌握存储过程的基本概念和创建、执行、删除方法。掌握数据库备份的方法和数据库恢复的方法。
|
8月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
198 0
|
8月前
|
存储 SQL 数据库
|
9月前
|
SQL 监控 关系型数据库
实时计算 Flink版操作报错合集之在设置监控PostgreSQL数据库时,将wal_level设置为logical,出现一些表更新和删除操作报错,怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
10月前
|
SQL 存储 数据库
SQL 撤销索引、撤销表以及撤销数据库
SQL 撤销索引、撤销表以及撤销数据库
122 4
|
10月前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
10月前
|
SQL 存储 数据管理
数据管理DMS产品使用合集之如何把整个数据库的表和数据全部导出来
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
157 2

热门文章

最新文章