sys.tables (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Devuelve una fila para cada tabla de usuario de una base de datos de SQL Server.

Nombre de la columna Tipo de datos Descripción
<inherited columns> Para obtener una lista de las columnas que hereda esta vista, consulte sys.objects (Transact-SQL).
lob_data_space_id int Un valor diferente de cero es el identificador del espacio de datos (grupo de archivos o esquema de partición) que contiene los datos de objeto binario grande (LOB) para esta tabla. Entre los ejemplos de tipos de datos LOB se encuentran varbinary(max), varchar(max), geografía o xml.

0 = La tabla no tiene datos LOB.
filestream_data_space_id int Identificador de espacio de datos para un grupo de archivos FILESTREAM o un esquema de partición que consta de grupos de archivos FILESTREAM.

Para notificar el nombre de un grupo de archivos FILESTREAM, ejecute la consulta SELECT FILEGROUP_NAME (filestream_data_space_id) FROM sys.tables.
sys.tables se puede unir a las siguientes vistas en 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 (unirse a filegroup_id)
max_column_id_used int Identificador de columna máximo que se ha utilizado en esta tabla.
lock_on_bulk_load bit La tabla está bloqueada en una carga masiva. Para obtener más información, vea sp_tableoption (Transact-SQL).
uses_ansi_nulls bit La tabla se creó con la SET ANSI_NULLS opción ONde base de datos .
is_replicated bit 1 = La tabla se publicó con la replicación de instantáneas o transaccional.
has_replication_filter bit 1 = La tabla tiene un filtro de replicación.
is_merge_published bit 1 = La tabla se publicó con la replicación de mezcla.
is_sync_tran_subscribed bit 1 = La tabla se suscribió con una suscripción de actualización inmediata.
has_unchecked_assembly_data bit 1 = La tabla contiene datos persistentes que dependen de un ensamblado cuya definición ha cambiado durante el último ALTER ASSEMBLY. Se restablecerá a 0 después de la siguiente operación correcta DBCC CHECKDB o DBCC CHECKTABLE.
text_in_row_limit int Número máximo de bytes permitido para text in row.

0 = La opción text in row no está establecida. Para obtener más información, vea sp_tableoption (Transact-SQL).
large_value_types_out_of_row bit 1 = Los tipos de valores grandes se guardan fuera de la fila. Para obtener más información, vea sp_tableoption (Transact-SQL).
is_tracked_by_cdc bit 1 = La tabla está habilitada para la captura de datos modificados. Para obtener más información, consulte sys.sp_cdc_enable_table (Transact-SQL).
lock_escalation tinyint Valor de la LOCK_ESCALATION opción para la tabla:

0 = TABLE
1 = DISABLE
2 = AUTO
lock_escalation_desc nvarchar(60) Descripción de texto de la opción lock_escalation para la tabla. Los valores posibles son: TABLE, AUTOy DISABLE.
is_filetable bit 1 = La tabla es un objeto FileTable.

Para obtener más información sobre FileTables, consulte FileTables (SQL Server).

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, y Azure SQL Database.
is_memory_optimized bit Los posibles valores son los siguientes:

0 = no optimizado en memory.
1 = está optimizado para memoria.

El valor 0 es el predeterminado.

Las tablas optimizadas para memoria se encuentran en las tablas de usuario de memoria, el esquema que se conserva en el disco similar a otras tablas de usuario. Se puede tener acceso a las tablas optimizadas para memoria desde procedimientos almacenados compilados de forma nativa.

Se aplica a: SQL Server 2014 (12.x) y versiones posteriores, y Azure SQL Database.
durability tinyint Estos son los valores posibles:

0 = SCHEMA_AND_DATA
1 = SCHEMA_ONLY

Un valor de 0 es el valor predeterminado.

Se aplica a: SQL Server 2014 (12.x) y versiones posteriores, y Azure SQL Database
durability_desc nvarchar(60) Los posibles valores son los siguientes:

SCHEMA_ONLY
SCHEMA_AND_DATA

Un valor de SCHEMA_AND_DATA indica que la tabla es una tabla duradera en memoria. SCHEMA_AND_DATA es el valor predeterminado para las tablas optimizadas para memoria. Un valor de indica que los datos de SCHEMA_ONLY la tabla no se conservan al reiniciar la base de datos con objetos optimizados para memoria.

Se aplica a: SQL Server 2014 (12.x) y versiones posteriores, y Azure SQL Database
temporal_type tinyint Valor numérico que representa el tipo de tabla:

0 = NON_TEMPORAL_TABLE
1 = HISTORY_TABLE (asociado a una tabla temporal)
2 = SYSTEM_VERSIONED_TEMPORAL_TABLE

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y Azure SQL Database
temporal_type_desc nvarchar(60) Descripción de texto del tipo de tabla:

NON_TEMPORAL_TABLE
HISTORY_TABLE
SYSTEM_VERSIONED_TEMPORAL_TABLE

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y Azure SQL Database
history_table_id int Cuando temporal_type es 2 o ledger_type es 2, devuelve object_id de la tabla que mantiene los datos históricos de una tabla temporal; de lo contrario, devuelve NULL.

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y Azure SQL Database
is_remote_data_archive_enabled bit Indica si se ha habilitado la tabla para Stretch.

0 = La tabla no está habilitada para Stretch.
1 = La tabla está habilitada para Stretch.

Para obtener más información, vea Stretch Database.

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y Azure SQL Database
is_external bit Indica que la tabla es una tabla externa.

0 = La tabla no es una tabla externa.
1 = La tabla es una tabla externa.

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, Azure SQL Database y Azure Synapse Analytics
history_retention_period int Valor numérico que representa la duración del período de retención del historial temporal en unidades especificadas con history_retention_period_unit.

Se aplica a: SQL Server 2017 (14.x) y versiones posteriores, y Azure SQL Database.
history_retention_period_unit int Valor numérico que representa el tipo de unidad del período de retención de historial temporal.

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

Se aplica a: SQL Server 2017 (14.x) y versiones posteriores, y Azure SQL Database.
history_retention_period_unit_desc nvarchar(10) Descripción de texto del tipo de unidad del período de retención de historial temporal.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

Se aplica a: SQL Server 2017 (14.x) y versiones posteriores, y Azure SQL Database.
is_node bit 1 = Tabla de nodos de grafos.
0 = No una tabla de nodo de grafo.

Se aplica a: SQL Server 2017 (14.x) y versiones posteriores, y Azure SQL Database.
is_edge bit 1 = Tabla perimetral del grafo.
0 = No una tabla perimetral de grafos.

Se aplica a: SQL Server 2017 (14.x) y versiones posteriores, y Azure SQL Database.
data_retention_period int Valor numérico que representa la duración del período de retención de datos en unidades especificadas con data_retention_period_unit.

Se aplica a:solo para Azure SQL Edge
data_retention_period_unit int Valor numérico que representa el tipo de unidad de período de retención de datos.

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

Se aplica a:solo para Azure SQL Edge
data_retention_period_unit_desc nvarchar(10) Descripción del texto del tipo de unidad de período de retención de datos.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

Se aplica a:solo para Azure SQL Edge
ledger_type tinyint El valor numérico indica si la tabla es una tabla de libro de contabilidad.

0 = NON_LEDGER_TABLE
1 = HISTORY_TABLE (asociado a una tabla actualizable del libro de contabilidad)
2 = UPDATABLE_LEDGER_TABLE
3 = APPEND_ONLY_LEDGER_TABLE

Para obtener más información sobre el libro de contabilidad de base de datos, consulte Libro de contabilidad.

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores, y Azure SQL Database
ledger_type_desc nvarchar(60) Descripción del texto de un valor en la ledger_type columna:

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores, y Azure SQL Database
ledger_view_id int Cuando ledger_type IN (2, 3) devuelve object_id la vista de libro de contabilidad, de lo contrario devuelve NULL.

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores, y Azure SQL Database
is_dropped_ledger_table bit Indica una tabla de libro de contabilidad que se quitó.

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores, y Azure SQL Database

Permisos

La visibilidad de los metadatos en las vistas de catálogo se limita a los elementos protegibles y que son propiedad de un usuario o sobre los que el usuario ha recibido algún permiso. Para obtener más información, consulte Metadata Visibility Configuration.

Ejemplos

A Devolver todas las tablas de usuario sin una clave principal

En el ejemplo siguiente se devuelven todas las tablas de usuario que no tienen una clave principal.

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

En el ejemplo siguiente se muestra cómo se pueden exponer datos temporales relacionados.

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y 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. Enumeración de información sobre la retención del historial temporal

En el ejemplo siguiente se muestra cómo se puede exponer información sobre la retención de historial temporal.

Se aplica a: SQL Server 2017 (14.x) y versiones posteriores, y 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;