Partilhar via


sys.tables (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Devolve uma linha para cada tabela de utilizador numa base de dados SQL Server.

Nome da coluna Tipo de dados Description
<inherited columns> Para obter uma lista de colunas herdadas por esse modo de exibição, consulte sys.objects (Transact-SQL).
lob_data_space_id int Um valor não nulo é o ID do espaço de dados (grupo de ficheiros ou esquema de partições) que contém os dados binários de objetos grandes (LOB) para esta tabela. Exemplos de tipos de dados LOB incluem varbinary(max), varchar(max),geografia ou xml.

0 = A tabela não tem dados LOB.
filestream_data_space_id int O ID do espaço de dados para um grupo de ficheiros FILESTREAM ou um esquema de partições que consiste em grupos de ficheiros FILESTREAM.

Para reportar o nome de um grupo de ficheiros FILESTREAM, execute a consulta SELECT FILEGROUP_NAME (filestream_data_space_id) FROM sys.tables.
sys.tables pode ser associado às seguintes opiniões sobre 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(junta-te)filegroup_id
max_column_id_used int ID máximo de coluna alguma vez usado por esta tabela.
lock_on_bulk_load bit A mesa está bloqueada em carga a granel. Para mais informações, consulte sp_tableoption (Transact-SQL).
uses_ansi_nulls bit A tabela foi criada com a SET ANSI_NULLS opção ONde base de dados .
is_replicated bit 1 = A tabela é publicada usando replicação instantânea ou replicação transacional.
has_replication_filter bit 1 = A tabela tem um filtro de replicação.
is_merge_published bit 1 = A tabela é publicada usando replicação de fusão.
is_sync_tran_subscribed bit 1 = A tabela é subscrita usando uma subscrição de atualização imediata.
has_unchecked_assembly_data bit 1 = A tabela contém dados persistentes que dependem de um conjunto cuja definição mudou durante o último ALTER ASSEMBLY. Será reiniciado para 0 após o próximo sucesso DBCC CHECKDB ou DBCC CHECKTABLE.
text_in_row_limit int O número máximo de bytes permitia texto em linha.

0 = A opção de texto na linha não está definida. Para mais informações, consulte sp_tableoption (Transact-SQL).
large_value_types_out_of_row bit 1 = Os tipos de grande valor são armazenados fora da linha. Para mais informações, consulte sp_tableoption (Transact-SQL).
is_tracked_by_cdc bit 1 = A tabela está ativada para captura de dados de alteração. Para mais informações, consulte sys.sp_cdc_enable_table (Transact-SQL).
lock_escalation tinyint Um valor da LOCK_ESCALATION opção para a tabela:

0 = TABLE
1 = DISABLE
2 = AUTO
lock_escalation_desc nvarchar(60) Uma descrição em texto da opção lock_escalation para a tabela. Os valores possíveis são: TABLE, AUTOe DISABLE.
is_filetable bit 1 = Table é uma FileTable.

Para mais informações sobre Tabelas de Ficheiros, consulte Tabelas de Ficheiros (SQL Server).

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores e Banco de Dados SQL do Azure
is_memory_optimized bit Os seguintes são os valores possíveis:

0 = não otimizado para memória.
1 = é otimizado pela memória.

Um valor de 0 é o valor padrão.

As tabelas otimizadas para memória são tabelas de utilizador em memória, cujo esquema é mantido no disco de forma semelhante a outras tabelas de utilizador. Tabelas otimizadas para memória podem ser acedidas a partir de procedimentos armazenados compilados nativamente.

Aplica-se a: SQL Server 2014 (12.x) e versões posteriores e Banco de Dados SQL do Azure.
durability tinyint Seguem-se os valores possíveis:

0 = SCHEMA_AND_DATA
1 = SCHEMA_ONLY

Um valor de 0 é o valor padrão.

Aplica-se a: SQL Server 2014 (12.x) e versões posteriores, e Azure SQL Database
durability_desc nvarchar(60) Os seguintes são os valores possíveis:

SCHEMA_ONLY
SCHEMA_AND_DATA

Um valor de SCHEMA_AND_DATA indica que a tabela é durável, em memória. SCHEMA_AND_DATA é o valor predefinido para tabelas otimizadas para memória. Um valor de SCHEMA_ONLY indica que os dados da tabela não são mantidos ao reiniciar a base de dados com objetos otimizados para memória.

Aplica-se a: SQL Server 2014 (12.x) e versões posteriores, e Azure SQL Database
temporal_type tinyint O valor numérico que representa o tipo de tabela:

0 = NON_TEMPORAL_TABLE
1 = HISTORY_TABLE (associado a uma tabela temporal)
2 = SYSTEM_VERSIONED_TEMPORAL_TABLE

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores, e Azure SQL Database
temporal_type_desc nvarchar(60) A descrição em texto do tipo de tabela:

NON_TEMPORAL_TABLE
HISTORY_TABLE
SYSTEM_VERSIONED_TEMPORAL_TABLE

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores, e Azure SQL Database
history_table_id int Quando é ou é , retorna object_id a tabela que mantém dados históricos para uma tabela temporal, caso contrário retorna NULL.2ledger_type2temporal_type

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores, e Azure SQL Database
is_remote_data_archive_enabled bit Indica se a tabela está ativada para Stretch.

0 = A tabela não está ativada para Stretch.
1 = A tabela está ativada para Stretch.

Para mais informações, consulte a Base de Dados Stretch.

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores, e Azure SQL Database
is_external bit Indica que a tabela é uma tabela externa.

0 = A tabela não é uma tabela externa.
1 = A tabela é uma tabela externa.

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores, Azure SQL Database e Azure Synapse Analytics
history_retention_period int O valor numérico que representa a duração do período de retenção do histórico temporal em unidades especificadas com history_retention_period_unit.

Aplica-se a: SQL Server 2017 (14.x) e versões posteriores e Banco de Dados SQL do Azure
history_retention_period_unit int O valor numérico representa o tipo de unidade de período de retenção de história temporal.

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

Aplica-se a: SQL Server 2017 (14.x) e versões posteriores e Banco de Dados SQL do Azure
history_retention_period_unit_desc Nvarchar(10) A descrição em texto do tipo de unidade de período de retenção de história temporal.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

Aplica-se a: SQL Server 2017 (14.x) e versões posteriores e Banco de Dados SQL do Azure
is_node bit 1 = Tabela de nós do grafo.
0 = Não é uma tabela de nós de grafo.

Aplica-se a: SQL Server 2017 (14.x) e versões posteriores e Banco de Dados SQL do Azure
is_edge bit 1 = Tabela de arestas do grafo.
0 = Não é uma tabela de arestas de grafo.

Aplica-se a: SQL Server 2017 (14.x) e versões posteriores e Banco de Dados SQL do Azure
data_retention_period int O valor numérico que representa a duração do período de retenção de dados em unidades especificadas com data_retention_period_unit.

Aplica-se apenas a: Azure SQL Edge
data_retention_period_unit int O valor numérico que representa o tipo de unidade de período de retenção de dados.

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

Aplica-se apenas a: Azure SQL Edge
data_retention_period_unit_desc Nvarchar(10) A descrição em texto do tipo de unidade de período de retenção de dados.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

Aplica-se apenas a: Azure SQL Edge
ledger_type tinyint O valor numérico indica se a tabela é uma tabela de registo.

0 = NON_LEDGER_TABLE
1 = HISTORY_TABLE (associado a uma tabela de registo atualizável)
2 = UPDATABLE_LEDGER_TABLE
3 = APPEND_ONLY_LEDGER_TABLE

Para obter mais informações sobre o livro-razão do banco de dados, consulte Livro-razão.

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores e Banco de Dados SQL do Azure
ledger_type_desc nvarchar(60) A descrição do texto de um valor na ledger_type coluna:

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores e Banco de Dados SQL do Azure
ledger_view_id int Quando ledger_type IN (2, 3) retorna object_id a vista do livro-maior, caso contrário retorna NULL.

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores e Banco de Dados SQL do Azure
is_dropped_ledger_table bit Indica uma tabela de registos que foi eliminada.

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores e Banco de Dados SQL do Azure

Permissions

A visibilidade dos metadados nas visualizações de catálogo é limitada aos itens de segurança que um utilizador possui ou nos quais o utilizador recebeu alguma permissão. Para obter mais informações, consulte Configuração de visibilidade de metadados.

Examples

A. Devolver todas as tabelas de utilizador sem uma chave primária

O exemplo seguinte devolve todas as tabelas de utilizador que não têm uma chave primária.

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

O exemplo seguinte mostra como dados temporais relacionados podem ser expostos.

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores e Banco de Dados SQL do 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. Lista de informações sobre a retenção do histórico temporal

O exemplo seguinte mostra como a informação sobre a retenção de história temporal pode ser exposta.

Aplica-se a: SQL Server 2017 (14.x) e versões posteriores e Banco de Dados SQL do 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;