Как читать метаданные базы данных и таблиц с сервера MS SQL с минимальными разрешениями

Я хочу придумать минимальный набор запросов, которые возвращают базы данных и таблицы в экземпляре Microsoft SQL Server на как можно большем количестве версий SQL Server.

Я не уверен, стоит ли мне частично отвечать на свой вопрос, но вот то, что, как мне кажется, мне нужно для 2000 и 2005 годов. В идеале я бы вернулся еще дальше, но у меня нет доступа к более старым версиям:

Разрешения

2005: пользователь с разрешением ПРОСМОТРЕТЬ ЛЮБЫЕ ОПРЕДЕЛЕНИЯ

2000: пользователь с общедоступной ролью во всех базах данных, подлежащих извлечению

Базы данных

sp_databases

or

SELECT * FROM sysdatabases

оба работают на SQL Server 2000 и 2005

Таблицы

2005

SELECT name FROM <database>.sys.tables

or

SELECT table_name FROM <database>.information_schema.tables WHERE table_type = 'BASE TABLE'

2000

SELECT name from <database>.dbo.sysobjects WHERE xtype = 'U'

person Community    schedule 04.11.2008    source источник


Ответы (1)


Я верю, что INFORMATION_SCHEMA Views могут вам помочь.

http://msdn.microsoft.com/en-us/library/ms186778.aspx

person João Vieira    schedule 04.11.2008
comment
Вы увидите, что я использую INFORMATION_SCHEMA в одном из моих запросов выше - однако в 2000 году я, похоже, не получил никаких результатов с пользователем только с публичной ролью, поэтому я использую dbo.sysobjects вместо. - person ; 05.11.2008