SQL比较数据库之间数据表缺失情况

说明:根据邹建老师的对比示例修改


IF EXISTS ( SELECT *
                FROM dbo.sysobjects
                WHERE id = OBJECT_ID(N'[dbo].[sp_CompareStructure]') AND OBJECTPROPERTY(id,
                                                              N'IsProcedure') = 1 )
    DROP PROCEDURE [dbo].[sp_CompareStructure]
 GO
 
CREATE PROC sp_CompareStructure @dbname1 VARCHAR(250), --要比较的数据库名1
    @dbname2 VARCHAR(250) --要比较的数据库名2
AS
CREATE TABLE #tb1 (TName VARCHAR(250), IncNo INT)
 
CREATE TABLE #tb2 (TName VARCHAR(250), IncNo INT)
 
 --得到数据库1用户表列表
EXEC('INSERT INTO #tb1
      SELECT TName = name, IncNo = uid FROM ' + @dbname1 + '..sysobjects WHERE type = ''U'' ORDER BY name')
 
 --得到数据库2用户表列表
EXEC('INSERT INTO #tb2
      SELECT TName = name, IncNo = uid FROM ' + @dbname2 + '..sysobjects WHERE type = ''U'' ORDER BY name')
SELECT 比较结果 = CASE WHEN a.TName IS NULL AND b.IncNo = 1 THEN '库1缺少表:' + b.TName
                   WHEN b.TName IS NULL AND a.IncNo = 1 THEN '库2缺少表:' + a.TName
                   ELSE ''
              END, *
    FROM #tb1 a
    FULL JOIN #tb2 b ON a.TName = b.TName
    WHERE a.TName IS NULL OR b.TName IS NULL
    ORDER BY ISNULL(a.TName, b.TName), ISNULL(a.IncNo, b.IncNo)
GO

--调用示例

EXEC sp_CompareStructure 'AA','BB' 




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值