sys.columns (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

Retourne une ligne pour chaque colonne d'un objet comportant des colonnes, telles que des vues ou des tables. La liste suivante contient les types d’objets qui ont des colonnes :

  • Fonctions table d'assembly (FT)
  • Fonctions table inline SQL (IF)
  • Tables internes (IT)
  • Tables système (S)
  • Fonctions table SQL (TF)
  • Tables utilisateur
  • Vues (V)
Nom de la colonne Type de données Description
object_id int Identificateur de l'objet auquel appartient cette colonne.
name sysname Nom de la colonne. Unique dans l'objet.
column_id int Identificateur de la colonne. Unique dans l'objet. Les ID de colonnes peuvent ne pas être séquentiels.
system_type_id tinyint ID du type de système de la colonne.
user_type_id int ID du type de colonne tel que défini par l'utilisateur. Pour retourner le nom du type, établissez une jointure à l'affichage de catalogue sys.types sur cette colonne.
max_length smallint Longueur maximale (en octets) de la colonne.

-1 = Le type de données de colonne est varchar(max), nvarchar(max), varbinary(max)ou xml.

Pour les colonnes texte, ntext et image , la max_length valeur est 16 (représentant le pointeur de 16 octets uniquement) ou la valeur définie par sp_tableoption 'text in row'.
precision tinyint Précision de la colonne si elle est numérique ; sinon, 0.
scale tinyint Mise à l’échelle de la colonne en fonction du nombre numérique ; sinon, 0.
collation_name sysname Nom du classement de la colonne si elle est basée sur des caractères ; sinon, NULL.
is_nullable bit 1 = La colonne est nullable
0 = La colonne n’est pas nullable
is_ansi_padded bit 1 = Colonne utilise ANSI_PADDING ON le comportement si caractère, binaire ou variant

0 = La colonne n’est pas un caractère, un binaire ou une variante
is_rowguidcol bit 1 = Colonne est une colonne déclarée ROWGUIDCOL
is_identity bit 1 = La colonne a des valeurs d’identité
is_computed bit 1 = Colonne est une colonne calculée
is_filestream bit 1 = Colonne est une colonne FILESTREAM
is_replicated bit 1 = La colonne est répliquée
is_non_sql_subscribed bit 1 = Colonne a un abonné non-SQL Server
is_merge_published bit 1 = La colonne est publiée par fusion
is_dts_replicated bit 1 = La colonne est répliquée à l’aide de SSIS
is_xml_document bit 1 = Le contenu est un document XML complet

0 = Le contenu est un fragment de document, ou le type de données de colonne n’est pas xml
xml_collection_id int Différent de zéro si le type de données de la colonne est xml et que le XML est saisi. La valeur est l’ID de la collection contenant l’espace de noms de schéma XML de validation de la colonne

0 = Aucune collection de schémas XML
default_object_id int ID de l’objet par défaut, qu’il s’agisse d’un objet autonome sp_bindefault ou d’une contrainte au niveau DEFAULT des colonnes inline. La colonne parent_object_id d'un objet inline par défaut de niveau colonne est une référence à la table elle-même.

0 = Aucune valeur par défaut
rule_object_id int ID de la règle autonome liée à la colonne à l’aide de sys.sp_bindrule.

0 = Aucune règle autonome. Pour connaître les contraintes au niveau CHECK des colonnes, consultez sys.check_constraints.
is_sparse bit 1 = Colonne est une colonne éparse. Pour plus d’informations, consultez Utiliser des colonnes éparses.
is_column_set bit 1 = Colonne est un jeu de colonnes. Pour plus d’informations, consultez Utiliser des colonnes éparses.
generated_always_type tinyint Identifie quand la valeur de colonne est générée (est toujours 0 pour les colonnes dans les tables système).

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et SQL Database.

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

S’applique à : SQL Server 2022 (16.x) et versions ultérieures et SQL Database.

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

Pour plus d’informations, consultez Tables temporelles (bases de données relationnelles).
generated_always_type_desc nvarchar(60) Description textuelle de la generated_always_type valeur (toujours NOT_APPLICABLE pour les colonnes dans les tables système)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et SQL Database.

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

S’applique à : SQL Server 2022 (16.x) et versions ultérieures et SQL Database.

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type int Type de chiffrement :

1 = Chiffrement déterministe
2 = Chiffrement aléatoire

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et SQL Database
encryption_type_desc nvarchar(64) Description du type de chiffrement :

RANDOMIZED
DETERMINISTIC

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et SQL Database
encryption_algorithm_name sysname Nom de l’algorithme de chiffrement. Seul AEAD_AES_256_CBC_HMAC_SHA_512 est pris en charge.

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et SQL Database
column_encryption_key_id int ID de la clé de chiffrement de colonne (CEK).

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et SQL Database
column_encryption_key_database_name sysname Nom de la base de données où la clé de chiffrement de colonne existe si elle est différente de la base de données de la colonne. NULL si la clé existe dans la même base de données que la colonne.

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et SQL Database
is_hidden bit Indique si la colonne est masquée :

0 = colonne régulière, non masquée, visible
1 = colonne masquée

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et SQL Database
is_masked bit Indique si la colonne est masquée par le masquage dynamique des données :

0 = colonne standard non masquée
1 = colonne masquée

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et SQL Database
graph_type int Colonne interne avec un ensemble de valeurs. Les valeurs sont comprises entre 1 et 8 pour les colonnes de graphe, et NULL pour d’autres.
graph_type_desc nvarchar(60) Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.
is_data_deletion_filter_column bit Indique si la colonne est celle des filtres de conservation des données pour la table.

S’applique à : Azure SQL Edge
ledger_view_column_type int Si ce n’est pas NULLle cas, indique le type d’une colonne dans une vue de registre :

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

Pour plus d’informations, consultez vue d’ensemble du registre.

S’applique à : SQL Server 2022 (16.x) et versions ultérieures, et SQL Database
ledger_view_column_type_desc nvarchar(60) Si ce n’est pas NULLle cas, contient une description textuelle du type d’une colonne dans un affichage de registre :

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

S’applique à : SQL Server 2022 (16.x) et versions ultérieures, et SQL Database
is_dropped_ledger_column bit Indique une colonne de table de registre qui a été supprimée.

S’applique à : SQL Server 2022 (16.x) et versions ultérieures, et SQL Database

autorisations

La visibilité des métadonnées dans les affichages catalogue est limitée aux éléments sécurisables qu'un utilisateur détient ou pour lesquels des autorisations lui ont été accordées. Pour plus d'informations, consultez Metadata Visibility Configuration.

Exemples d'utilisation

Obtenir les détails de colonne d’une table

Pour obtenir des métadonnées pour les colonnes d’une table, vous pouvez utiliser le code suivant :

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');