2012-03-19 106 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