2012-03-19 1 views
4

Должно быть легко, но я не могу получить его.Фильтрация SQL-систем sys.objects по базе данных

Я хочу отфильтровать результаты sys.objects по базе данных (имя или идентификатор). Я думал, что мне нужно присоединиться к sys.databases, но, похоже, это невозможно. Я пошел в документы SQL Server, но не нашел ничего, что могло бы помочь.

Что мне не хватает?

+0

Вы всегда видите только объекты базы данных из ** текущей ** базы данных в любом случае - так зачем вам нужно фильтровать по базе данных? На самом деле это не имеет смысла ... –

ответ

12

Каждая база данных имеет свои собственные sys.objects, так что вы должны получить базу данных из sys.databases и

select from {dbname}.sys.objects 

{имя_бд} является name от sys.databases

+1

Также: я бы рекомендовал использовать более сфокусированные виды, такие как 'sys.tables',' sys.procedures' и т. Д., А не только 'sys.objects' - экономит вас для указания типа объекта (поскольку это уже видно из сфокусированных представлений) –

+0

Ок, я был введен в заблуждение такими объектами, как sysrowsetcolumns, sysowners. Они появляются в sys.objects, но не в узле Management Studio «Системные таблицы» или в sys.tables, поэтому я думал, что они пришли из других баз данных. Оказывается, они - некоторые из них - часть моего db. – MatteoSp

Смежные вопросы