sys.tables (Transact-SQL)

S’applique à : SQL Server (toutes les versions prises en charge) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Retourne une ligne pour chaque table utilisateur dans SQL Server.

Nom de la colonne Type de données Description
<colonnes héritées> Pour obtenir une liste de colonnes héritées par cet affichage, consultez sys.objects (Transact-SQL).
lob_data_space_id int Une valeur différente de zéro représente l'ID d'espace de données (groupe de fichiers ou schéma de partition) qui contient les données d'objet binaire volumineux (LOB) de cette table. Des exemples de types de données d’application métier incluent varbinary(max), varchar(max), geography ou xml.

0 = la table n’a pas de données d’application métier.
filestream_data_space_id int ID d'espace de données pour un groupe de fichiers FILESTREAM ou un schéma de partition composé de groupes de fichiers FILESTREAM.

Pour signaler le nom d'un groupe de fichiers FILESTREAM, exécutez la requête SELECT FILEGROUP_NAME (filestream_data_space_id) FROM sys.tables.

sys.tables peut être joint aux vues suivantes sur filestream_data_space_id = data_space_id.

- sys.filegroups

- sys.partition_schemes

- sys.indexes

- sys.allocation_units

- sys.fulltext_catalogs

- sys.data_spaces

- sys.destination_data_spaces

- sys.master_files

- sys.database_files

- backupfilegroup (rejoindre filegroup_id)
max_column_id_used int ID de colonne maximum utilisé à ce jour par cette table.
lock_on_bulk_load bit La table est verrouillée pour le chargement en masse. Pour plus d’informations, consultez sp_tableoption (Transact-SQL).
uses_ansi_nulls bit Lorsque la table a été créée, l'option de base de données SET ANSI_NULLS avait pour valeur ON.
is_replicated bit 1 = la table est publiée à l'aide de la réplication d'instantané ou de la réplication transactionnelle.
has_replication_filter bit 1 = la table possède un filtre de réplication.
is_merge_published bit 1 = la table est publiée à l'aide de la réplication de fusion.
is_sync_tran_subscribed bit 1 = la table est abonnée à l'aide d'un abonnement avec mise à jour immédiate.
has_unchecked_assembly_data bit 1 = La table contient des données persistantes qui dépendent d'un assembly dont la définition a été modifiée lors de la dernière exécution de ALTER ASSEMBLY. Cette valeur est réinitialisée à 0 après exécution correcte de l'opération DBCC CHECKDB ou DBCC CHECKTABLE suivante.
text_in_row_limit int Taille maximale en octets du texte de la ligne.

0 = l'option « text in row » n'est pas définie. Pour plus d’informations, consultez sp_tableoption (Transact-SQL).
large_value_types_out_of_row bit 1 = les types de valeur élevée sont stockés en dehors de la ligne. Pour plus d’informations, consultez sp_tableoption (Transact-SQL).
is_tracked_by_cdc bit 1 = la table est activée pour la capture des données modifiées. Pour plus d’informations, consultez sys.sp_cdc_enable_db (Transact-SQL).
lock_escalation tinyint Valeur de l'option LOCK_ESCALATION pour la table :

0 = TABLE

1 = DISABLE

2 = AUTO
lock_escalation_desc nvarchar(60) Description textuelle de l'option lock_escalation pour la table. Les valeurs possibles sont : TABLE, AUTO et DISABLE.
is_filetable bit S’applique à : SQL Server 2012 (11.x) et versions ultérieures, et à Azure SQL Database.

1 = La table est un FileTable.

Pour plus d’informations sur les FileTables, consultez FileTables (SQL Server).
durabilité tinyint S’applique à : SQL Server 2014 (12.x) et versions ultérieures et Azure SQL Database.

Les valeurs possibles sont les suivantes :

0 = SCHEMA_AND_DATA

1 = SCHEMA_ONLY

La valeur 0 est la valeur par défaut.
durability_desc nvarchar(60) S’applique à : SQL Server 2014 (12.x) et versions ultérieures et Azure SQL Database.

Les valeurs possibles sont les suivantes :

SCHEMA_ONLY

SCHEMA_AND_DATA

La valeur de SCHEMA_AND_DATA indique que la table est une table en mémoire durable. SCHEMA_AND_DATA est la valeur par défaut des tables optimisées en mémoire. La valeur de SCHEMA_ONLY indique que les données de la table ne seront pas conservées lors du redémarrage de la base de données contenant des objets à mémoire optimisée.
is_memory_optimized bit S’applique à : SQL Server 2014 (12.x) et versions ultérieures et Azure SQL Database.

Les valeurs possibles sont les suivantes :

0 = Non optimisé en mémoire.

1 = optimisé en mémoire.

La valeur 0 est la valeur par défaut.

Les tables à mémoire optimisées sont des tables utilisateur en mémoire dont le schéma est rendu persistant sur disque, comme d'autres tables utilisateur. Les tables optimisées en mémoire sont accessibles à partir des procédures stockées compilées en mode natif.
temporal_type tinyint S’applique à : SQL Server 2016 (13.x) et versions ultérieures et Azure SQL Database.

Valeur numérique représentant le type de table :

0 = NON_TEMPORAL_TABLE

1 = HISTORY_TABLE (associé à une table temporelle)

2 = SYSTEM_VERSIONED_TEMPORAL_TABLE
temporal_type_desc nvarchar(60) S’applique à : SQL Server 2016 (13.x) et versions ultérieures et Azure SQL Database.

Description textuelle du type de tableau :

NON_TEMPORAL_TABLE

HISTORY_TABLE

SYSTEM_VERSIONED_TEMPORAL_TABLE
history_table_id int S’applique à : SQL Server 2016 (13.x) et versions ultérieures et Azure SQL Database.

Lorsque temporal_type = 2 ou ledger_type = 2 retourne object_id de la table qui conserve les données historiques d’une table temporelle, sinon retourne NULL.
is_remote_data_archive_enabled bit S’applique à : SQL Server 2016 (13.x) et versions ultérieures et à Azure SQL Database

Indique si la table est déjà activée par Stretch.

0 = La table n’est pas activée par Stretch.

1 = La table est activée par Stretch.

Pour plus d'informations, consultez Stretch Database.
is_external bit S’applique à : SQL Server 2016 (13.x) et versions ultérieures, Azure SQL Database et Azure Synapse Analytics.

Indique que la table est externe.

0 = la table n’est pas externe.

1 = la table est externe.
history_retention_period int S'applique à: Azure SQL Database.

Valeur numérique représentant la durée de rétention de l’historique temporel dans les unités spécifiées avec history_retention_period_unit.
history_retention_period_unit int S'applique à: Azure SQL Database.

Valeur numérique représentant le type d’unité de durée de rétention de l’historique temporel.

-1: INFINITE

3: DAY

4: WEEK

5: MONTH

6: YEAR
history_retention_period_unit_desc nvarchar(10) S'applique à: Azure SQL Database.

Description textuelle du type d’unité de période de rétention de l’historique temporel.

INFINITE

DAY

WEEK

MONTH

YEAR
is_node bit S’applique à  : SQL Server 2017 (14.x) et Azure SQL Database.

1 = il s’agit d’une table de nœuds de graphique.

0 = il ne s’agit pas d’une table de nœud de graphique.
is_edge bit S'applique à: Azure SQL Database.

1 = il s’agit d’une table Edge de graphique.

0 = il ne s’agit pas d’une table Edge de graphique.
ledger_type tinyint S’applique à : à compter de SQL Server 2022 (16.x), Azure SQL Database.

La valeur numérique indique si la table est une table de registre.

0 = NON_LEDGER_TABLE
1 = HISTORY_TABLE (associée à une table de registre pouvant être mise à jour)
2 = UPDATABLE_LEDGER_TABLE
3 = APPEND_ONLY_LEDGER_TABLE

Pour plus d’informations sur le registre de bases de données, consultez Registre.
ledger_type_desc nvarchar(60) S’applique à : à compter de SQL Server 2022 (16.x), Azure SQL Database.

Description textuelle d’une valeur dans la colonne ledger_type :

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE
ledger_view_id int S’applique à : à compter de SQL Server 2022 (16.x), Azure SQL Database.

Lorsque ledger_type IN (2,3) retourne object_id de l’affichage de registre, sinon retourne NULL.
is_dropped_ledger_table bit S’applique à : à compter de SQL Server 2022 (16.x), Azure SQL Database.

Indique une table de registre annulée.

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

L'exemple suivant retourne toutes les tables utilisateur qui ne possèdent pas de clé primaire.

SELECT SCHEMA_NAME(schema_id) AS schema_name  
    ,name AS table_name   
FROM sys.tables   
WHERE OBJECTPROPERTY(object_id,'TableHasPrimaryKey') = 0  
ORDER BY schema_name, table_name;  
GO  
  

L’exemple suivant montre comment les données temporelles associées peuvent être exposées.

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

SELECT T1.object_id, T1.name as TemporalTableName, SCHEMA_NAME(T1.schema_id) AS TemporalTableSchema,  
T2.name as HistoryTableName, SCHEMA_NAME(T2.schema_id) AS HistoryTableSchema,  
T1.temporal_type_desc  
FROM sys.tables T1  
LEFT JOIN sys.tables T2   
ON T1.history_table_id = T2.object_id  
ORDER BY T1.temporal_type desc  

L’exemple suivant montre comment les informations sur la rétention de l’historique temporel peuvent être exposées.

S'applique à: Azure SQL Database.

SELECT DB.is_temporal_history_retention_enabled, SCHEMA_NAME(T1.schema_id) AS TemporalTableSchema, 
T1.name as TemporalTableName, SCHEMA_NAME(T2.schema_id) AS HistoryTableSchema, T2.name as HistoryTableName,
T1.history_retention_period, T1.history_retention_period_unit_desc
FROM sys.tables T1  
OUTER APPLY (select is_temporal_history_retention_enabled from sys.databases where name = DB_NAME()) DB
LEFT JOIN sys.tables T2   
ON T1.history_table_id = T2.object_id WHERE T1.temporal_type = 2 

Voir aussi

Vues de catalogue d'objets (Transact-SQL)
Affichages catalogue (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
DBCC CHECKTABLE (Transact-SQL)
Questions fréquentes sur l'interrogation des catalogues système de SQL Server
In-Memory OLTP (optimisation en mémoire)