sys.tables (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)Endpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft Fabric

Restituisce una riga per ogni tabella utente in un database di SQL Server.

Nome colonna Tipo di dati Descrizione
<inherited columns> Per un elenco di colonne ereditate da questa vista, vedere sys.objects (Transact-SQL).For a list of columns that this view inherits, see sys.objects (Transact-SQL).
lob_data_space_id int Un valore diverso da zero corrisponde all'ID dello spazio dati (filegroup o schema di partizione) in cui sono inclusi dati LOB (large object binary) per la tabella. Esempi di tipi di dati LOB includono varbinary(max), varchar(max), geography o xml.

0 = La tabella non contiene dati LOB.
filestream_data_space_id int ID spazio dati per un filegroup FILESTREAM o uno schema di partizione costituito da filegroup FILESTREAM.

Per segnalare il nome di un filegroup FILESTREAM, eseguire la query SELECT FILEGROUP_NAME (filestream_data_space_id) FROM sys.tables.
sys.tables può essere unito alle viste seguenti in 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 (join in filegroup_id)
max_column_id_used int ID di colonna massimo utilizzato dalla tabella.
lock_on_bulk_load bit La tabella è bloccata durante il caricamento bulk. Per altre informazioni, vedere sp_tableoption (Transact-SQL).
uses_ansi_nulls bit La tabella è stata creata con l'opzione SET ANSI_NULLSONdi database .
is_replicated bit 1 = La tabella è stata pubblicata tramite una replica snapshot o una replica transazionale.
has_replication_filter bit 1 = La tabella è associata a un filtro di replica.
is_merge_published bit 1 = La tabella è stata pubblicata tramite una replica di tipo merge.
is_sync_tran_subscribed bit 1 = La tabella è stata sottoscritta tramite una sottoscrizione ad aggiornamento immediato.
has_unchecked_assembly_data bit 1 = La tabella contiene dati persistenti che dipendono da un assembly la cui definizione è stata modificata durante l'ultimo ALTER ASSEMBLYoggetto . Verrà reimpostato su 0 dopo il successivo esito positivo DBCC CHECKDB o DBCC CHECKTABLE.
text_in_row_limit int Numero minimo di byte consentito per il testo nella riga.

0 = L'opzione Testo nella riga non è impostata. Per altre informazioni, vedere sp_tableoption (Transact-SQL).
large_value_types_out_of_row bit 1 = I tipi per valori di grandi dimensioni vengono archiviati esternamente alla riga. Per altre informazioni, vedere sp_tableoption (Transact-SQL).
is_tracked_by_cdc bit 1 = Per la tabella è abilitata l'acquisizione dei dati delle modifiche. Per altre informazioni, vedere sys.sp_cdc_enable_table (Transact-SQL).
lock_escalation tinyint Valore dell'opzione LOCK_ESCALATION per la tabella:

0 = TABLE
1 = DISABLE
2 = AUTO
lock_escalation_desc nvarchar(60) Descrizione di testo dell'opzione lock_escalation per la tabella. I valori possibili sono: TABLE, AUTOe DISABLE.
is_filetable bit 1 = la tabella è una tabella FileTable.

Per altre informazioni sulle tabelle FileTable, vedere Tabelle FileTable (SQL Server).

Si applica a: SQL Server 2012 (11.x) e versioni successive e database SQL di Azure
is_memory_optimized bit Di seguito sono indicati i valori possibili:

0 = senza ottimizzazione per la memoria.
1 = con ottimizzazione per la memoria.

Il valore predefinito è 0.

Le tabelle con ottimizzazione per la memoria sono tabelle utente in memoria, il cui schema è persistente su disco in modo analogo ad altre tabelle utente. È possibile accedere alle tabelle con ottimizzazione per la memoria da stored procedure compilate in modo nativo.

Si applica a: SQL Server 2014 (12.x) e versioni successive e database SQL di Azure.
durability tinyint Di seguito sono indicati i valori possibili:

0 = SCHEMA_AND_DATA
1 = SCHEMA_ONLY

Un valore di 0 è il valore predefinito.

Si applica a: SQL Server 2014 (12.x) e versioni successive e database SQL di Azure
durability_desc nvarchar(60) Di seguito sono indicati i valori possibili:

SCHEMA_ONLY
SCHEMA_AND_DATA

Un valore indica SCHEMA_AND_DATA che la tabella è una tabella durevole in memoria. SCHEMA_AND_DATA è il valore predefinito per le tabelle ottimizzate per la memoria. Un valore SCHEMA_ONLY indica che i dati della tabella non vengono salvati in modo permanente al riavvio del database con oggetti ottimizzati per la memoria.

Si applica a: SQL Server 2014 (12.x) e versioni successive e database SQL di Azure
temporal_type tinyint Valore numerico che rappresenta il tipo di tabella:

0 = NON_TEMPORAL_TABLE
1 = HISTORY_TABLE (associato a una tabella temporale)
2 = SYSTEM_VERSIONED_TEMPORAL_TABLE

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL di Azure
temporal_type_desc nvarchar(60) Descrizione del tipo di tabella:

NON_TEMPORAL_TABLE
HISTORY_TABLE
SYSTEM_VERSIONED_TEMPORAL_TABLE

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL di Azure
history_table_id int Quando temporal_type è o ledger_type è 22 , restituisce object_id la tabella che mantiene i dati cronologici per una tabella temporale, in caso contrario restituisce NULL.

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL di Azure
is_remote_data_archive_enabled bit Indica se la tabella è abilitata per Stretch.

0 = La tabella non è abilitata per l'estensione.
1 = La tabella è abilitata per Stretch.

Per ulteriori informazioni, vedere Stretch Database.

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL di Azure
is_external bit Indica che la tabella è una tabella esterna.

0 = La tabella non è una tabella esterna.
1 = La tabella è una tabella esterna.

Si applica a: SQL Server 2016 (13.x) e versioni successive, database SQL di Azure e Azure Synapse Analytics
history_retention_period int Valore numerico che rappresenta la durata del periodo di conservazione della cronologia temporale in unità specificate con history_retention_period_unit.

Si applica a: SQL Server 2017 (14.x) e versioni successive e database SQL di Azure
history_retention_period_unit int Valore numerico che rappresenta il tipo di unità periodo di conservazione della cronologia temporale.

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

Si applica a: SQL Server 2017 (14.x) e versioni successive e database SQL di Azure
history_retention_period_unit_desc nvarchar(10) Descrizione del testo del tipo di unità del periodo di conservazione della cronologia temporale.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

Si applica a: SQL Server 2017 (14.x) e versioni successive e database SQL di Azure
is_node bit 1 = Tabella dei nodi del grafo.
0 = Non una tabella dei nodi del grafo.

Si applica a: SQL Server 2017 (14.x) e versioni successive e database SQL di Azure
is_edge bit 1 = Tabella dei bordi del grafo.
0 = Non una tabella dei bordi del grafo.

Si applica a: SQL Server 2017 (14.x) e versioni successive e database SQL di Azure
data_retention_period int Valore numerico che rappresenta la durata del periodo di conservazione dei dati in unità specificate con data_retention_period_unit.

Si applica a: solo SQL Edge di Azure
data_retention_period_unit int Valore numerico che rappresenta il tipo di unità del periodo di conservazione dei dati.

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

Si applica a: solo SQL Edge di Azure
data_retention_period_unit_desc nvarchar(10) Descrizione del testo del tipo di unità del periodo di conservazione dei dati.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

Si applica a: solo SQL Edge di Azure
ledger_type tinyint Il valore numerico indica se la tabella è una tabella mastro.

0 = NON_LEDGER_TABLE
1 = HISTORY_TABLE (associato a una tabella mastro aggiornabile)
2 = UPDATABLE_LEDGER_TABLE
3 = APPEND_ONLY_LEDGER_TABLE

Per altre informazioni sul libro mastro del database, vedere Libro mastro.

Si applica a: SQL Server 2022 (16.x) e versioni successive e database SQL di Azure
ledger_type_desc nvarchar(60) Descrizione testuale di un valore nella ledger_type colonna:

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE

Si applica a: SQL Server 2022 (16.x) e versioni successive e database SQL di Azure
ledger_view_id int Quando ledger_type IN (2, 3) restituisce object_id la visualizzazione libro mastro, in caso contrario restituisce NULL.

Si applica a: SQL Server 2022 (16.x) e versioni successive e database SQL di Azure
is_dropped_ledger_table bit Indica una tabella libro mastro eliminata.

Si applica a: SQL Server 2022 (16.x) e versioni successive e database SQL di Azure

Autorizzazioni

La visibilità dei metadati nelle viste del catalogo è limitata alle entità a protezione diretta di cui un utente è proprietario o a cui l'utente ha concesso alcune autorizzazioni. Per altre informazioni, vedere Metadata Visibility Configuration.

Esempi

R. Restituire tutte le tabelle utente senza una chiave primaria

Nell'esempio seguente vengono restituite tutte le tabelle utente che non dispongono di una chiave primaria.

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

Nell'esempio seguente viene illustrato come è possibile esporre i dati temporali correlati.

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL di Azure.

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. Elencare le informazioni sulla conservazione della cronologia temporale

Nell'esempio seguente viene illustrato come esporre le informazioni sulla conservazione della cronologia temporale.

Si applica a: SQL Server 2017 (14.x) e versioni successive, Database SQL di Azure.

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;