Я хочу придумать минимальный набор запросов, которые возвращают базы данных и таблицы в экземпляре 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'