Поделиться через


Представления информационной схемы (Transact-SQL)

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

Важное примечаниеВажно!

В представления информационной схемы были внесены определенные изменения, нарушающие обратную совместимость. Эти изменения описаны в разделах, посвященных конкретным представлениям.

ПримечаниеПримечание

Представления информационной схемы обеспечивают внутренний, системный, не зависящий от таблиц обзор метаданных SQL Server. Представления информационной схемы позволяют приложениям правильно работать, несмотря на значительные изменения, внесенные в базовые системные таблицы. Представления информационной схемы, включенные в SQL Server, соответствуют стандартному определению ISO для INFORMATION_SCHEMA.

SQL Server поддерживает соглашения по трехкомпонентному именованию при ссылках на текущий сервер. Стандарт ISO также поддерживает соглашения по трехкомпонентному именованию. Однако имена, которые используются в обоих соглашениях, различаются. Представления информационной схемы определяются в специальной схеме с именем INFORMATION_SCHEMA. Эта схема содержится в любой базе данных. Каждое представление информационной схемы содержит метаданные для всех объектов, хранящихся в этой конкретной базе данных. В следующей таблице представлены связи между именами SQL Server и стандартными именами SQL.

Имя SQL Server

Соответствует эквивалентному стандартному имени SQL

База данных

Каталог

Схема

Схема

Объект

Объект

Определяемый пользователем тип данных (псевдоним)

Домен

Настоящее соглашение по соответствию имен применяется к следующим представлениям SQL Server, совместимым со стандартом ISO.

Некоторые представления содержат ссылки на различные классы данных, например символьные данные или двоичные данные.

Как показано в следующем примере, при ссылке на представления информационной схемы необходимо использовать полное имя, включающее имя схемы INFORMATION_SCHEMA.

USE AdventureWorks;
GO

SELECT ccu.TABLE_SCHEMA, ccu.TABLE_NAME, ccu.COLUMN_NAME, cc.CONSTRAINT_SCHEMA, cc.CONSTRAINT_NAME, cc.CHECK_CLAUSE
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS AS cc
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS ccu
    ON cc.CONSTRAINT_NAME = ccu.CONSTRAINT_NAME;