比较差异数据库中的差异表中的2个差异表中的列名称SQL

问题描述:

我想从差异数据库中的2个差异表中获取列名,并比较它们以查看是否有任何表中有额外的列。他们应该完全匹配。一种可能的解决方案可能是将表中的所有列名与临时表中的所有列名并排比较?请帮助。比较差异数据库中的差异表中的2个差异表中的列名称SQL

IF OBJECT_ID('tempdb..#myTable') IS NOT NULL DROP TABLE #myTable 

CREATE table #myTable (
    table1 varchar(100) null, 
    table2 varchar(100) null 
) 

INSERT INTO #myTable (table1) 
    SELECT name 
    FROM sys.columns 
    WHERE object_id = OBJECT_ID('table1') 

select * from #mytable 
DROP TABLE #mytable 
+0

这是一次性的交易吗?即你可以使用架构比较工具(Redgate/Devart/Idera /等)吗? –

+0

而不是临时表,您可以将列拖入子选择,并对其执行“FULL OUTER JOIN”,并查找缺少其中一个边的任何记录。 – Danny

我修改您的查询到该

IF OBJECT_ID('tempdb..#myTable') IS NOT NULL DROP TABLE #myTable 
CREATE table #myTable 
(
rowNum int IDENTITY(1,1), 
table1 varchar(100) null 
) 
GO 
IF OBJECT_ID('tempdb..#myTable2') IS NOT NULL DROP TABLE #myTable2 
CREATE table #myTable2 
(
rowNum int IDENTITY(1,1), 
table2 varchar(100) null 
) 
GO 

USE database1 --your 1st database name here 
GO 

INSERT INTO #myTable (table1) 
     (
     SELECT 
      name 
     FROM sys.columns 
     WHERE object_id = OBJECT_ID('Table_1')) 
GO 

USE database2 -- your 2nd database name here 
GO 

INSERT INTO #myTable2 (table2) 
     (
     SELECT 
      name 
     FROM sys.columns 
     WHERE object_id = OBJECT_ID('Table_2')) 
GO 


SELECT table1,table2 
FROM #myTable m 
FULL OUTER JOIN #myTable2 m2 ON m.rowNum = m2.rowNum 
ORDER BY table1,table2 
DROP TABLE #mytable 
DROP TABLE #mytable2 
+1

您可能想要添加ORDER BY只是为了在这两种情况下都要以相同顺序插入列。 – pmbAustin