sys.tables (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Retourne une ligne pour chaque table utilisateur dans une base de données SQL Server.

Nom de la colonne Type de données Description
<inherited columns> 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 qui se compose 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 (joindre sur 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 La table a été créée avec l’option SET ANSI_NULLSONde base de données .
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 changé au cours du dernier ALTER ASSEMBLY. Sera réinitialisé à 0 après la réussite DBCC CHECKDB ou DBCC CHECKTABLE.
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 pour la LOCK_ESCALATION 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 les suivantes : TABLE, AUTO, et DISABLE.
is_filetable bit 1 = La table est un FileTable.

Pour plus d’informations sur les FileTables, consultez FileTables (SQL Server).

S’applique à : SQL Server 2012 (11.x) et versions ultérieures, et Azure SQL Database
is_memory_optimized bit 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.

S’applique à : SQL Server 2014 (12.x) et versions ultérieures, et Azure SQL Database.
durability tinyint Les valeurs possibles sont les suivantes :

0 = SCHEMA_AND_DATA
1 = SCHEMA_ONLY

Une valeur est 0 la valeur par défaut.

S’applique à : SQL Server 2014 (12.x) et versions ultérieures, et Azure SQL Database
durability_desc nvarchar(60) Les valeurs possibles sont les suivantes :

SCHEMA_ONLY
SCHEMA_AND_DATA

Une valeur indiquant SCHEMA_AND_DATA que la table est une table durable en mémoire. SCHEMA_AND_DATA est la valeur par défaut pour les tables mémoire optimisées. Une valeur indiquant que les données de SCHEMA_ONLY table ne sont pas conservées lors du redémarrage de la base de données avec des objets mémoire optimisés.

S’applique à : SQL Server 2014 (12.x) et versions ultérieures, et Azure SQL Database
temporal_type tinyint 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

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et Azure SQL Database
temporal_type_desc nvarchar(60) Description textuelle du type de tableau :

NON_TEMPORAL_TABLE
HISTORY_TABLE
SYSTEM_VERSIONED_TEMPORAL_TABLE

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et Azure SQL Database
history_table_id int Quand temporal_type est ou ledger_type est22, les retours object_id de la table qui conservent des données historiques pour une table temporelle, sinon retourne NULL.

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et Azure SQL Database
is_remote_data_archive_enabled bit 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.

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, et Azure SQL Database
is_external bit Indique que la table est externe.

0 = la table n’est pas externe.
1 = la table est externe.

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, Azure SQL Database et Azure Synapse Analytics
history_retention_period int Valeur numérique représentant la durée de la période de rétention de l’historique temporel en unités spécifiées avec history_retention_period_unit.

S’applique à : SQL Server 2017 (14.x) et versions ultérieures, et Azure SQL Database
history_retention_period_unit int Valeur numérique représentant le type d’unité de durée de rétention de l’historique temporel.

-1: INFINITE
0: SECOND
1: MINUTE
2: HOUR
3: DAY
4: WEEK
5: MONTH
6: YEAR

S’applique à : SQL Server 2017 (14.x) et versions ultérieures, et Azure SQL Database
history_retention_period_unit_desc nvarchar(10) Description textuelle du type d’unité de période de rétention de l’historique temporel.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

S’applique à : SQL Server 2017 (14.x) et versions ultérieures, et Azure SQL Database
is_node bit 1 = Table de nœuds graphes.
0 = Pas une table de nœuds de graphe.

S’applique à : SQL Server 2017 (14.x) et versions ultérieures, et Azure SQL Database
is_edge bit 1 = Tableau de bord du graphique.
0 = Pas une table de bord de graphe.

S’applique à : SQL Server 2017 (14.x) et versions ultérieures, et Azure SQL Database
data_retention_period int Valeur numérique représentant la durée de la période de rétention des données en unités spécifiées avec data_retention_period_unit.

S’applique à : Azure SQL Edge uniquement
data_retention_period_unit int Valeur numérique représentant le type d’unité de période de rétention des données.

-1: INFINITE
0: SECOND
1: MINUTE
2: HOUR
3: DAY
4: WEEK
5: MONTH
6: YEAR

S’applique à : Azure SQL Edge uniquement
data_retention_period_unit_desc nvarchar(10) Description textuelle du type d’unité de période de rétention des données.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

S’applique à : Azure SQL Edge uniquement
ledger_type tinyint La valeur numérique indique si la table est une table de registre.

0 = NON_LEDGER_TABLE
1 = HISTORY_TABLE (associé à 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.

S’applique à : SQL Server 2022 (16.x) et versions ultérieures, et Azure SQL Database
ledger_type_desc nvarchar(60) Description textuelle d’une valeur dans la ledger_type colonne :

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE

S’applique à : SQL Server 2022 (16.x) et versions ultérieures, et Azure SQL Database
ledger_view_id int Lorsque ledger_type IN (2, 3) l’affichage du registre est retourné object_id , sinon, retourne NULL.

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

S’applique à : SQL Server 2022 (16.x) et versions ultérieures, et Azure 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

R. Retourner toutes les tables utilisateur sans clé primaire

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;

C. Répertorier les informations sur la rétention de l’historique temporel

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

S’applique à : SQL Server 2017 (14.x) et versions ultérieures, et 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;