Запрос к системному каталогу сервера SQL Server

Динамические приложения без жестко заданной необходимости работы с конкретным набором таблиц и представлений должны иметь механизм определения структуры и атрибутов объектов в любой базе данных, к которой они пытаются подключиться. Для этих приложений могут потребоваться следующие сведения.

  • Количество и названия таблиц и представления в базе данных.
  • Количество столбцов в таблице или представлении, а также имя, тип данных, масштаб и точность каждого столбца.
  • Ограничения, определенные для таблицы.
  • Индексы и ключи, определенные для таблицы.

Системный каталог SQL Server 2005 предоставляет эти сведения для баз данных SQL Server. Ядром системных каталогов SQL Server 2005 является набор представлений, которые показывают метаданные, описывающие объекты в экземпляре SQL Server. Метаданные — это данные, описывающие атрибуты объектов в системе. Приложения с поддержкой SQL Server могут обращаться к этим сведениям в системных каталогах с помощью следующих элементов.

  • Представления каталога. Рекомендуется использовать именно этот способ доступа.
  • Представления информационной схемы.
  • Наборы строк схемы OLE DB.
  • Функции работы с каталогами ODBC.
  • Системные хранимые процедуры и функции.

Представления каталога

SQL Server 2005 предлагает представления каталога в качестве совершенно нового реляционного интерфейса для метаданных системных каталогов. Эти представления обеспечивают доступ к метаданным, хранимым в каждой базе данных на сервере.

ms189082.note(ru-ru,SQL.90).gifПримечание.
Представления каталога не обеспечивают доступ к метаданным репликации, агента SQL Server и резервирования.

Рекомендуется использовать представления каталога для обращения к метаданным по следующим причинам.

  • Все метаданные доступны в качестве представлений каталога.
  • Представления каталога показывают метаданные в формате, который не зависит от реализации конкретной таблицы каталога, вследствие чего на них не влияют изменения в базовых таблицах каталога.
  • Представления каталога являются наиболее эффективным способом доступа к основным метаданным сервера.
  • Представления каталога — это стандартный интерфейс метаданных каталога. Они обеспечивают наиболее простой способ получения, преобразования и отображения настраиваемых форм метаданных.
  • Имена представлений каталога и их столбцов являются описательными. Результаты запросов соответствуют ожидаемым результатам пользователей, не обладающих большими знаниями по функции, которая соответствует запрашиваемым метаданным.
ms189082.note(ru-ru,SQL.90).gifВажно!
В будущих версиях SQL Server определение любого представления системного каталога может быть расширено путем добавления столбцов в конец списка столбцов. При написании программного кода не рекомендуется использовать синтаксис SELECT * FROM sys.catalog_view_name, поскольку число возвращаемых столбцов может измениться и привести к сбою в работе приложения.

Примеры запросов к системному каталогу с помощью представлений каталога см. в разделе Часто задаваемые вопросы о запросах к системному каталогу сервера SQL Server.

Представления информационной схемы

Представления информационной схемы основаны на определениях представлений каталога в стандарте SQL-92. Они показывают сведения о каталоге в формате, который не зависит от реализации конкретной таблицы каталога, вследствие чего на них не влияют изменения в базовых таблицах каталога. Приложения, использующие эти представления, можно переносить в разнородные системы баз данных, совместимые со стандартом SQL-92. Дополнительные сведения см. в разделе Представления информационной схемы (Transact-SQL).

ms189082.note(ru-ru,SQL.90).gifПримечание.
Представления информационной схемы не содержат метаданные, относящиеся только к SQL Server 2005.

Представления совместимости

Большинство системных таблиц из ранних версий SQL Server не реализованы как набор представлений в SQL Server 2005. Эти представления известны как представления совместимости, и они не предназначены только для обратной совместимости. Они отображают метаданные, доступные в SQL Server 2000. Однако они не отображают метаданные, относящиеся к новым функциям SQL Server 2005. Поэтому при использовании этих функций (например компонент Service Broker или секционирование) следует применять представления каталога. Это достаточное основание для перехода к представлениям каталога. Еще одним основанием для перехода к представлениям каталога является то, что столбцы представлений совместимости, хранящие идентификаторы пользователей и типов, могут возвращать значения NULL или приводить к арифметическому переполнению. Это обусловлено тем, что в SQL Server 2005 можно создавать более 32 767 пользователей и типов данных. Например, если создано 32 768 пользователей и выполняется запрос SELECT * FROM sys.sysusers, то при значении ARITHABORT, равном ON, запрос завершается ошибкой арифметического переполнения. Если значение параметра ARITHABORT равно OFF, столбец uid возвращает значение NULL.

Чтобы избежать этого, рекомендуется перейти на использование новых представлений каталога, позволяющих манипулировать большим числом идентификаторов пользователей и типов.

Наборы строк схемы OLE DB

Спецификация OLE DB задает интерфейс IDBSchemaRowset, раскрывающий совокупность наборов строк схемы, которые содержат сведения о каталогах. Наборы строк схемы OLE DB являются стандартным способом представления сведений о каталогах, поддерживаемых различными поставщиками OLE DB. Наборы строк не зависят от структуры базовых таблиц каталогов. Дополнительные сведения см. в разделе Schema Rowset Support (OLE DB).

Поставщик OLE DB для собственного клиента SQL поддерживает дополнение к интерфейсу IDBSchemaRowset, передающее сведения о каталогах для связанных серверов, используемых в распределенных запросах. Дополнительные сведения см. в разделе LINKEDSERVERS Rowset (OLE DB).

Функции работы с каталогами ODBC

Спецификация ODBC задает набор функций работы с каталогами, которые возвращают наборы результатов, содержащие сведения о каталогах. Эти функции являются стандартным способом представления сведений о каталогах, поддерживаемых различными драйверами ODBC. Наборы результатов не зависят от структуры базовых таблиц каталогов.

ODBC-драйвер для собственного клиента SQL поддерживает две специальные функции, которые передают сведения о каталогах для связанных серверов, используемых в распределенных запросах. Дополнительные сведения см. в разделе Using Catalog Functions.

Системные хранимые процедуры и функции

Компонент Transact-SQL определяет серверные системные хранимые процедуры и хранимые функции, возвращающие сведения о каталогах. Хотя эти хранимые процедуры и функции зависят от SQL Server, они отделяют пользователей от структуры базовых таблиц системных каталогов. Дополнительные сведения см. в разделах Функции метаданных (Transact-SQL) и Системные хранимые процедуры (Transact-SQL).

См. также

Задачи

Устранение неполадок, связанных с видимостью метаданных

Основные понятия

Часто задаваемые вопросы о запросах к системному каталогу сервера SQL Server

Другие ресурсы

Системные представления (Transact-SQL)
Системные таблицы (Transact-SQL)
Представления каталога (Transact-SQL)
Представления совместимости (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005