2011-04-26 67 views
4

INFORMATION_SCHEMA.TABLES或INFORMATION_SCHEMA.COLUMNS僅適用於指定的數據庫。適用於服務器上所有數據庫的SQL - INFORMATION_SCHEMA

是否有可能通過使用INFORMATION_SCHEMA查詢服務器上所有數據庫的表元數據?

+0

你有適當的訪問與您的用戶,這使得查詢嗎? – Adnan 2011-04-26 07:25:53

+0

假設我有,解決方案是什麼? – 2011-04-26 07:26:58

回答

9

只有對數據庫迭代使用動態查詢,才能做到這一點。一種方法是使用ms_ForEachDB存儲過程,其次是查詢sys.databases動態視圖。

1

您可以使用此:

SELECT TABLE_SCHEMA 
FROM information_schema.tables 
group by tables.TABLE_SCHEMA 
+0

雖然此代碼可能會回答問題,但如果提供 關於_why_和/或_how_的其他上下文,則回答問題將顯着提高其長期值 。請[編輯]你的答案,添加一些解釋。 特別是,它是否一次抓取所有數據庫的元數據? AIUI(基於MyQSL和PostgreSQL)將僅返回當前數據庫的表元數據。 SQL Server在這方面有什麼不同? – 2016-04-28 15:00:21

+0

這不回答這個問題。所提供的查詢僅返回當前數據庫上下文的數據。如果您的服務器上有多個數據庫(TABLE_CATALOG),那麼它不會顯示所有這些數據庫,這就是這個問題所要求的。試試這個'SELECT DISTINCT TABLE_CATALOG FROM information_schema.tables',你將只能看到一個值。 – Davos 2018-02-06 23:14:34

0
SELECT DISTINCT `TABLE_SCHEMA` FROM `information_schema`.`TABLES`; 
相關問題