sys.tables (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Gibt eine Zeile für jede Benutzertabelle in SQL Server zurück.

Spaltenname Datentyp BESCHREIBUNG
<Geerbte Spalten> Eine Liste der Spalten, die diese Sicht erbt, finden Sie unter sys.objects (Transact-SQL).
lob_data_space_id int Ein Wert ungleich 0 (null) ist die ID des Datenbereichs (Dateigruppe oder Partitionsschema), der die LOB-Binärdaten (Large Object) für diese Tabelle enthält. Beispiele für LOB-Datentypen sind varbinary(max), varchar(max), geography und xml.

0 = Die Tabelle enthält keine LOB-Daten.
filestream_data_space_id int Die ID des Datenbereichs für eine FILESTREAM-Dateigruppe oder ein Partitionsschema, das aus FILESTREAM-Dateigruppen besteht.

Um den Namen einer FILESTREAM-Dateigruppe auszugeben, führen Sie die Abfrage SELECT FILEGROUP_NAME (filestream_data_space_id) FROM sys.tables aus.

sys.tables kann zu den folgenden Sichten über filestream_data_space_id = data_space_id verknüpft werden.

- 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 (Join in filegroup_id)
max_column_id_used int Höchste Spalten-ID, die von dieser Tabelle je verwendet wurde
lock_on_bulk_load bit Die Tabelle wird bei Massenladevorgängen gesperrt. Weitere Informationen finden Sie unter sp_tableoption (Transact-SQL).
uses_ansi_nulls bit Beim Erstellen der Tabelle war die Datenbankoption SET ANSI_NULLS auf ON festgelegt.
is_replicated bit 1 = Die Tabelle wird mithilfe der Momentaufnahme- oder der Transaktionsreplikation veröffentlicht.
has_replication_filter bit 1 = Die Tabelle hat einen Replikationsfilter.
is_merge_published bit 1 = Die Tabelle wird mithilfe der Mergereplikation veröffentlicht.
is_sync_tran_subscribed bit 1 = Die Tabelle wird mithilfe eines Abonnements mit sofortigem Update abonniert.
has_unchecked_assembly_data bit 1 = Die Tabelle enthält persistente Daten, die von einer Assembly abhängen, deren Definition bei der letzten ALTER ASSEMBLY-Anweisung geändert wurde. Der Wert wird nach der nächsten erfolgreichen Ausführung von DBCC CHECKDB oder DBCC CHECKTABLE auf 0 zurückgesetzt.
text_in_row_limit int Die zulässige Höchstzahl der Bytes für Text in Zeilen.

0 = Text in Zeilenoption ist nicht festgelegt. Weitere Informationen finden Sie unter sp_tableoption (Transact-SQL).
large_value_types_out_of_row bit 1 = Umfangreiche Werttypen werden außerhalb der Zeile gespeichert. Weitere Informationen finden Sie unter sp_tableoption (Transact-SQL).
is_tracked_by_cdc bit 1 = Tabelle wird für Change Data Capture aktiviert. Weitere Informationen finden Sie unter sys.sp_cdc_enable_table (Transact-SQL).
lock_escalation tinyint Der Wert der LOCK_ESCALATION-Option für die Tabelle:

0 = TABLE

1 = DISABLE

2 = AUTO
lock_escalation_desc nvarchar(60) Eine Textbeschreibung der lock_escalation-Option für die Tabelle. Mögliche Werte sind TABLE, AUTO und DISABLE.
is_filetable bit Gilt für: SQL Server 2012 (11.x) und höher sowie Azure SQL-Datenbank.

1 = Tabelle ist eine FileTable.

Weitere Informationen zu FileTables finden Sie unter FileTables (SQL Server).
durability tinyint Gilt für: SQL Server 2014 (12.x) und höher und Azure SQL-Datenbank.

Folgende Werte sind möglich:

0 = SCHEMA_AND_DATA

1 = SCHEMA_ONLY

0 ist der Standardwert.
durability_desc nvarchar(60) Gilt für: SQL Server 2014 (12.x) und höher und Azure SQL-Datenbank.

Folgende Werte sind möglich:

SCHEMA_ONLY

SCHEMA_AND_DATA

Der Wert von SCHEMA_AND_DATA gibt an, dass die Tabelle eine dauerhafte speicherinterne Tabelle ist. SCHEMA_AND_DATA ist der Standardwert für arbeitsspeicheroptimierte Tabellen. Der Wert von SCHEMA_ONLY gibt an, dass die Tabellendaten beim Neustart der Datenbank mit arbeitsspeicheroptimierten Objekten nicht beibehalten werden.
is_memory_optimized bit Gilt für: SQL Server 2014 (12.x) und höher und Azure SQL-Datenbank.

Folgende Werte sind möglich:

0 = nicht speicheroptimiert.

1 = ist speicheroptimiert.

0 ist der Standardwert.

Arbeitsspeicheroptimierte Tabellen sind In-Memory-Benutzertabellen, deren Schema ähnlich wie bei anderen Benutzertabellen auf dem Datenträger beibehalten wird. Auf arbeitsspeicheroptimierte Tabellen kann von nativ kompilierten gespeicherten Prozeduren zugegriffen werden.
temporal_type tinyint Gilt für: SQL Server 2016 (13.x) und höher und Azure SQL-Datenbank.

Der numerische Wert, der den Tabellentyp darstellt:

0 = NON_TEMPORAL_TABLE

1 = HISTORY_TABLE (mit einer temporalen Tabelle verknüpft)

2 = SYSTEM_VERSIONED_TEMPORAL_TABLE
temporal_type_desc nvarchar(60) Gilt für: SQL Server 2016 (13.x) und höher und Azure SQL-Datenbank.

Die Textbeschreibung des Tabellentyps:

NON_TEMPORAL_TABLE

HISTORY_TABLE

SYSTEM_VERSIONED_TEMPORAL_TABLE
history_table_id int Gilt für: SQL Server 2016 (13.x) und höher und Azure SQL-Datenbank.

Wenn temporal_type = 2 oder ledger_type = 2, wird die object_id der Tabelle zurückgegeben, die Verlaufsdaten für eine temporale Tabelle verwaltet, andernfalls wird NULL zurückgegeben.
is_remote_data_archive_enabled bit Gilt für: SQL Server 2016 (13.x) und höher sowie Azure SQL-Datenbank

Gibt an, ob die Tabelle für Stretch aktiviert ist.

0 = Die Tabelle ist nicht für Stretch aktiviert.

1 = Die Tabelle ist für Stretch aktiviert.

Weitere Informationen finden Sie unter Stretch Database.
is_external bit Gilt für: SQL Server 2016 (13.x) und höher, Azure SQL-Datenbank und Azure Synapse Analytics.

Gibt an, ob die Tabelle eine externe Tabelle ist.

0 = Die Tabelle ist keine externe Tabelle.

1 = Die Tabelle ist eine externe Tabelle.
history_retention_period int Gilt für: Azure SQL-Datenbank.

Der numerische Wert, der die Beibehaltungsdauer für den Verlauf der temporalen Tabelle in Einheiten darstellt, die mit history_retention_period_unit angegeben sind.
history_retention_period_unit int Gilt für: Azure SQL-Datenbank.

Der numerische Wert, der den Typ der Einheit für die Beibehaltungsdauer für den Verlauf der temporalen Tabelle darstellt.

-1: INFINITE

3: DAY

4: WEEK

5: MONTH

6: YEAR
history_retention_period_unit_desc nvarchar(10) Gilt für: Azure SQL-Datenbank.

Die Textbeschreibung des Typs der Einheit für die Beibehaltungsdauer für den Verlauf der temporalen Tabelle.

INFINITE

DAY

WEEK

MONTH

YEAR
is_node bit Gilt für: SQL Server 2017 (14.x) und Azure SQL-Datenbank.

1 = Dies ist eine Diagrammknotentabelle.

0 = Dies ist keine Diagrammknotentabelle.
is_edge bit Gilt für: Azure SQL-Datenbank.

1 = Dies ist eine Diagrammedgetabelle.

0 = Dies ist keine Diagrammedgetabelle.
ledger_type tinyint Gilt für: Versionen ab SQL Server 2022 (16.x), Azure SQL-Datenbank

Der numerische Wert gibt an, ob es sich bei der Tabelle um eine Ledgertabelle handelt.

0 = NON_LEDGER_TABLE
1 = HISTORY_TABLE (verknüpft mit einer aktualisierbaren Ledgertabelle)
2 = UPDATABLE_LEDGER_TABLE
3 = APPEND_ONLY_LEDGER_TABLE

Weitere Informationen zum Datenbankledger finden Sie unter Ledger.
ledger_type_desc nvarchar(60) Gilt für: Versionen ab SQL Server 2022 (16.x), Azure SQL-Datenbank

Die Textbeschreibung eines Werts in der Spalte „ledger_type“:

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE
ledger_view_id int Gilt für: Versionen ab SQL Server 2022 (16.x), Azure SQL-Datenbank

Wenn ledger_type IN (2,3), wird die object_id der Ledgersicht zurückgegeben, andernfalls wird NULL zurückgegeben.
is_dropped_ledger_table bit Gilt für: Versionen ab SQL Server 2022 (16.x), Azure SQL-Datenbank

Gibt eine Ledgertabelle an, die gelöscht wurde.

Berechtigungen

Die Sichtbarkeit der Metadaten in Katalogsichten ist auf sicherungsfähige Elemente eingeschränkt, bei denen der Benutzer entweder der Besitzer ist oder für die dem Benutzer eine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Metadata Visibility Configuration.

Beispiele

Das folgende Beispiel gibt alle Benutzertabellen zurück, die keinen Primärschlüssel aufweisen.

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  
  

Das folgende Beispiel zeigt, wie verwandte temporale Daten verfügbar gemacht werden können.

Gilt für: SQL Server 2016 (13.x) und höher und Azure SQL-Datenbank.

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  

Das folgende Beispiel zeigt, wie Informationen zur Beibehaltung des Verlaufs in temporalen Tabellen verfügbar gemacht werden können.

Gilt für: Azure SQL-Datenbank.

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 

Weitere Informationen

Katalogsichten für Objekte (Transact-SQL)
Katalogsichten (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
DBCC CHECKTABLE (Transact-SQL)
FAQ: Abfragen des SQL Server-Systemkatalogs
In-Memory OLTP (In-Memory Optimization)