2012-03-19 124 views
4

應該很容易,但我無法得到它。通過數據庫篩選SQL Server sys.objects

我想通過數據庫(名稱或ID)過濾sys.objects結果。我想我必須加入sys.databases,但似乎不可能。我去了SQL Server文檔,但沒有找到任何可能的幫助。

我錯過了什麼?

+0

你總是隻看到name數據庫對象從**當前**數據庫無論如何 - 所以爲什麼你需要過濾數據庫??對我來說真的沒有意義... – 2012-03-19 09:12:03

回答

12

每個數據庫都有自己的sys.objects中,所以你必須得到sys.databases中的數據庫和

select from {dbname}.sys.objects 

{} DBNAME從sys.databases中

+1

另外:我會建議使用像'sys.tables','sys.procedures'等等更集中的視圖,而不是'sys.objects' - 節省您來指定一個對象類型(因爲這已經從已經關注的視圖中清楚了) – 2012-03-19 09:16:16

+0

好的,我被'sysrowsetcolumns','sysowners'等對象誤導了。它們出現在sys.objects中,但不在Management Studio的「System Tables」節點中,也不在sys.tables中,所以我認爲它們來自其他數據庫。事實證明,他們是 - 我的分貝的一部分。 – MatteoSp 2012-03-19 09:40:19