簡體   English   中英

查找兩個不同數據庫中具有相同名稱的表之間的列差異

[英]Find column differences between tables with the same name in two different databases

我有兩個數據庫,而且它們都有完全相同的表名。 但是,已在兩個數據庫之間添加和刪除了匹配表之間的某些列。 我試圖弄清楚如何編寫一個查詢,該查詢只能在第一個數據庫中返回列,而在第二個數據庫中僅返回列。

我一直在使用INFORMATION_SCHEMA.TABLES和INFORMATION_SCHEMA.COLUMNS,但由於無法找到在兩個數據庫之間比較INFORMATION_SCHEMA的方法而感到困惑。 我希望此語法可以區分兩個數據庫,但它不能:

[Database1]..[INFORMATION_SCHEMA].[COLUMNS]

如果您現在可以告訴我,我對SQL不太熟悉

任何幫助表示贊賞!

這將找到DB1中不在DB2中的任何列。

select t.name as TableName
    , c.name as ColumnName
from DB1.sys.tables t
join DB1.sys.columns c on c.object_id = t.object_id

EXCEPT

select t.name as TableName
    , c.name as ColumnName
from DB2.sys.tables t
join DB2.sys.columns c on c.object_id = t.object_id

您可以簡單地反向進行查找以找到DB2中不在DB1中的列。

另一種選擇是從RedGate購買第三方組件,例如SQL Compare。

顧名思義, INFORMATION_SCHEMA是一個架構。 因此,三部分命名為:

from Database1.INFORMATION_SCHEMA.COLUMNS

您在一起有兩個句點,這是默認模式,但這不是視圖所在的位置。

如果要訪問另一台服務器上的視圖,則可以使用四部分命名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM