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 nullable0 = La colonne n’est pas nullable |
is_ansi_padded |
bit | 1 = Colonne utilise ANSI_PADDING ON le comportement si caractère, binaire ou variant0 = 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 complet0 = 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 colonne0 = 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éterministe2 = Chiffrement aléatoireS’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, visible1 = colonne masquéeS’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ée1 = colonne masquéeS’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 NULL le 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 NULL le 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');