Как получить список всех схем в базе данных Sql Server
Я хочу получить список всех схем в данной базе данных Sql Server. Используя ADO.NET schema retrieval API я получаю список всех коллекций, но нет коллекции для "схем".
Я мог бы пересечь 'Tables','Procedures' коллекции (и другие, если требуется) и получить список уникальных имен схем, но нет ли более простого/короткого способа достижения того же результата?
пример: для стандартной 'AdventureWorks' база данных я бы тоже хотел получить следующий список -dbo,HumanResources,Person,Production,Purchasing,Sales (Я опустил другие стандартные имена schem, такие как db_accessadmin,db_datareader etc)
Edit: я могу получить список схем, запросив системный вид -INFORMATION_SCHEMA.SCHEMATA но предпочел бы использовать API схемы в качестве первого выбора.
5 ответов:
для 2005 года и позже, они оба дадут то, что вы ищете.
SELECT name FROM sys.schemas SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATAдля 2000 года, это даст список базы данных на экземпляр.
SELECT * FROM INFORMATION_SCHEMA.SCHEMATAЭто "обратная несовместимость", отмеченная в ответе @Adrift.
В SQL Server 2000 (и ниже) на самом деле нет "схем" как таковых, хотя вы можете использовать роли в качестве пространств имен аналогичным образом. В этом случае это может быть самым близким аналог.
SELECT * FROM sysusers WHERE gid <> 0
попробуйте этот запрос здесь:
SELECT * FROM sys.schemasЭто даст вам имя и schema_id для всех определяет схемы в базе данных, в которой вы выполняете это.
Я действительно не знаю, что вы подразумеваете под запросом "schema API" - these
sys.вид каталога (вsysсхема) - это ваш лучший выбор для любой системной информации о базах данных и объектах в этих базах данных.
вы также можете запросить INFORMATION_SCHEMA.Вид схемы:
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATAЯ считаю, что запрос представлений INFORMATION_SCHEMA рекомендуется, поскольку они защищают вас от изменений в базовых таблицах sys. Из справки SQL Server 2008 R2:
представления информационных схем предоставляют внутренняя, системная таблица-независимая просмотр метаданных SQL Server. Представления информационных схем позволяют приложения для правильной работы несмотря на значительные изменения было сделано для базовых системных таблиц. Включенные представления информационной схемы в SQL Server соблюдайте ISO стандартное определение для ИНФОРМАЦИОННАЯ СХЕМА.
Как ни странно, этому сразу же предшествует эта заметка:
некоторые изменения были внесены в представления информационных схем, которые ломаются обратная совместимость. Внесенные изменения описаны в разделах для конкретные взгляды.
SELECT s.name + '.' + ao.name , s.name FROM sys.all_objects ao INNER JOIN sys.schemas s ON s.schema_id = ao.schema_id WHERE ao.type='u';
Если вы используете SQL Server Management Studio, вы можете получить список всех схем, создать свою собственную схему или удалить существующую, перейдя по ссылке:
Базы Данных - [Ваша База Данных] - Безопасность-Схемы
Comments