2017-05-24 60 views
0

我想從差異數據庫中的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

回答

0

我修改您的查詢到該

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