sys.columns (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

Возвращает строку для каждого столбца объекта, имеющего столбцы, например представления или таблицы. В следующем списке содержатся типы объектов, имеющие столбцы:

  • возвращающие табличное значение функции сборки (FT);
  • встроенные возвращающие табличное значение функции SQL (IF);
  • внутренние таблицы (IT);
  • системные таблицы (S);
  • возвращающие табличное значение функции SQL (TF);
  • пользовательские таблицы (U);
  • представления (V).
Имя столбца Тип данных Description
object_id int Идентификатор объекта, которому принадлежит этот столбец.
name sysname Имя столбца. Уникален в пределах объекта.
column_id int Идентификатор столбца. Уникален в пределах объекта. Идентификаторы столбца могут быть непоследовательными.
system_type_id tinyint Идентификатор системного типа столбца.
user_type_id int Идентификатор определенного пользователем типа столбца. Чтобы вернуть имя типа, присоедините к представлению каталога sys.types в этом столбце.
max_length smallint Максимальная длина столбца (в байтах).

-1= тип данных столбца — varchar(max), nvarchar(max), varbinary(max)или xml.

Для столбцов текста, ntext и изображений значение равно 16 (представляющее только указатель 16-байтов) или значение, заданное по значениюsp_tableoption 'text in row'. max_length
precision tinyint Точность столбца, если числовое значение; 0в противном случае .
scale tinyint Масштабирование столбца, если числовое значение; 0в противном случае .
collation_name sysname Имя параметров сортировки столбца, если он символьный; в противном случае — значение NULL.
is_nullable bit 1 = столбец имеет значение NULL
0 = столбец не допускает значение NULL
is_ansi_padded bit 1 = столбец использует ANSI_PADDING ON поведение, если символ, двоичный или вариант

0 = столбец не является символом, двоичным или вариантом
is_rowguidcol bit 1 = столбец объявлен ROWGUIDCOL
is_identity bit 1 = столбец имеет значения идентификаторов
is_computed bit 1 = столбец — вычисляемый столбец
is_filestream bit 1 = столбец FILESTREAM — это столбец FILESTREAM
is_replicated bit 1 = реплицируется столбец
is_non_sql_subscribed bit 1 = Столбец имеет подписчик, отличный от SQL Server
is_merge_published bit 1 = столбец опубликован слиянием
is_dts_replicated bit 1 = столбец реплицируется с помощью служб SSIS
is_xml_document bit 1 = содержимое — полный XML-документ

0 = содержимое является фрагментом документа, или тип данных столбца не является xml
xml_collection_id int Ненулевое значение, если тип столбца — xml, а XML типизирован. Значением является идентификатор коллекции, содержащей проверяющее пространство имен схемы XML столбца.

0 = нет коллекции схем XML
default_object_id int Идентификатор объекта по умолчанию независимо от того, является ли он автономным объектом sp_bindefault или встроенным ограничением на уровне DEFAULT столбцов. Столбец parent_object_id встроенного объекта "значение по умолчанию" уровня столбца представляет собой ссылку на саму таблицу.

0 = нет по умолчанию
rule_object_id int Идентификатор автономного правила, привязанного к столбцу, с помощью sys.sp_bindrule.

0 = нет автономного правила. Ограничения на уровне CHECK столбцов см. в sys.check_constraints.
is_sparse bit 1 = столбец является разреженным столбцом. Дополнительные сведения см. в разделе "Использование разреженных столбцов".
is_column_set bit 1 = столбец — это набор столбцов. Дополнительные сведения см. в разделе "Использование разреженных столбцов".
generated_always_type tinyint Определяет, когда создается значение столбца (всегда 0 используется для столбцов в системных таблицах).

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL.

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

Область применения: SQL Server 2022 (16.x) и более поздних версий и База данных SQL.

5 = AS_TRANSACTION_ID_START
6 = AS_TRANSACTION_ID_END
7 = AS_SEQUENCE_NUMBER_START
8 = AS_SEQUENCE_NUMBER_END

Дополнительные сведения см. в разделе Темпоральные таблицы (реляционные базы данных).
generated_always_type_desc nvarchar(60) Текстовое описание generated_always_type значения (всегда NOT_APPLICABLE для столбцов в системных таблицах)

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL.

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

Область применения: SQL Server 2022 (16.x) и более поздних версий и База данных SQL.

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type int Тип шифрования:

1 = детерминированное шифрование
2 = случайное шифрование

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL
encryption_type_desc nvarchar(64) Описание типа шифрования:

RANDOMIZED
DETERMINISTIC

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL
encryption_algorithm_name sysname Имя алгоритма шифрования. Поддерживается только AEAD_AES_256_CBC_HMAC_SHA_512.

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL
column_encryption_key_id int Идентификатор ключа шифрования столбца (CEK).

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL
column_encryption_key_database_name sysname Имя базы данных, в которой существует ключ шифрования столбца, если отличается от базы данных столбца. NULL, если ключ существует в той же базе данных, что и столбец.

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL
is_hidden bit Указывает, если столбец скрыт:

0 = обычный, не скрытый, видимый столбец
1 = скрытый столбец

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL
is_masked bit Указывает, маскируется ли столбец динамическим маскированием данных:

0 = обычный, не маскированные столбцы
1 = столбец маскируется

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL
graph_type int Внутренний столбец с набором значений. Значения находятся между 1 столбцами графа и 8 NULL другими.
graph_type_desc nvarchar(60) Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
is_data_deletion_filter_column bit Указывает, является ли столбец столбцом фильтра хранения данных для таблицы.

Область применения: SQL Azure для пограничных вычислений
ledger_view_column_type int Если нет NULL, указывает тип столбца в представлении реестра:

1 = TRANSACTION_ID
2 = SEQUENCE_NUMBER
3 = OPERATION_TYPE
4 = OPERATION_TYPE_DESC

Дополнительные сведения см. в обзоре реестра.

Область применения: SQL Server 2022 (16.x) и более поздних версий и База данных SQL
ledger_view_column_type_desc nvarchar(60) Если нет NULL, содержит текстовое описание типа столбца в представлении реестра:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

Область применения: SQL Server 2022 (16.x) и более поздних версий и База данных SQL
is_dropped_ledger_column bit Указывает столбец таблицы реестра, который был удален.

Область применения: SQL Server 2022 (16.x) и более поздних версий и База данных SQL

Разрешения

Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или которым пользователь получил некоторое разрешение. Дополнительные сведения см. в разделе Metadata Visibility Configuration.

Примеры использования

Получение сведений о столбце для таблицы

Чтобы получить метаданные для столбцов в таблице, можно использовать следующий код:

CREATE TABLE dbo.[sample] (
    id INT NOT NULL
    ,col1 VARBINARY(10) NULL
    )
GO

SELECT c.[name] AS column_name
    ,t.[name] AS [type_name]
    ,c.[max_length]
    ,c.[precision]
    ,c.[scale]
FROM sys.columns c
INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE object_id = object_id('dbo.sample');