sys.tables (Transact-SQL)

Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)

Возвращает по одной строке для каждой пользовательской таблицы в SQL Server.

Имя столбца Тип данных Описание
<наследуемые столбцы> Список столбцов, наследуемых этим представлением, см. в разделе sys.objects (Transact-SQL).
lob_data_space_id int Ненулевое значение — это идентификатор пространства данных (файловой группы или схемы секционирования), хранящего данные больших двоичных объектов (LOB) для этой таблицы. Примеры типов данных LOB включают varbinary(max), varchar(max), geography или xml.

0 = в таблице отсутствуют данные LOB.
filestream_data_space_id int Идентификатор пространства данных для файловой группы FILESTREAM или схемы секционирования, состоящей из файловых групп FILESTREAM.

Чтобы получить имя файловой группы FILESTREAM, необходимо выполнить запрос SELECT FILEGROUP_NAME (filestream_data_space_id) FROM sys.tables.

sys.tables можно объединить со следующими представлениями по условию 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 on filegroup_id)
max_column_id_used int Максимальный идентификатор столбца, когда-либо использованный в таблице.
lock_on_bulk_load bit Таблица заблокирована при массовой загрузке. Дополнительные сведения см. в статье sp_tableoption (Transact-SQL).
uses_ansi_nulls bit Таблица была создана при установленном параметре SET ANSI_NULLS = ON.
is_replicated bit 1 = таблица опубликована путем репликации моментальных снимков или транзакций.
has_replication_filter bit 1 = для таблицы имеется фильтр репликации.
is_merge_published bit 1 = таблица опубликована путем репликации слиянием.
is_sync_tran_subscribed bit 1 = таблица используется в немедленно обновляемой подписке.
has_unchecked_assembly_data bit 1 = таблица содержит материализованные данные, зависящие от сборки, определение которых изменилось во время последней операции ALTER ASSEMBLY. Будет сброшено в значение 0 после следующей успешной операции DBCC CHECKDB или DBCC CHECKTABLE.
text_in_row_limit int Максимальное число байтов, разрешенное для текста в строке.

0 = параметр текста в строке не установлен. Дополнительные сведения см. в статье sp_tableoption (Transact-SQL).
large_value_types_out_of_row bit 1 = типы больших значений хранятся вне строк. Дополнительные сведения см. в статье sp_tableoption (Transact-SQL).
is_tracked_by_cdc bit 1 = в таблице включена система отслеживания измененных данных. Дополнительные сведения см. в разделе sys.sp_cdc_enable_table (Transact-SQL).
lock_escalation tinyint Значение параметра LOCK_ESCALATION для таблицы.

0 = TABLE

1 = DISABLE

2 = AUTO
lock_escalation_desc nvarchar(60) Текстовое описание параметра lock_escalation для таблицы. Возможные значения: TABLE, AUTO и DISABLE.
is_filetable bit Область применения: SQL Server 2012 (11.x) и выше, а также База данных SQL Azure.

1 = таблица имеет тип FileTable.

Дополнительные сведения о таблицах FileTable см. в разделе Таблицы FileTable (SQL Server).
устойчивость tinyint Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.

Возможные следующие значения.

0 = SCHEMA_AND_DATA

1 = SCHEMA_ONLY

Значением по умолчанию является значение 0.
durability_desc nvarchar(60) Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.

Допустимы следующие значения:

SCHEMA_ONLY

SCHEMA_AND_DATA

Значение SCHEMA_AND_DATA указывает, что таблица является надежной и оптимизированной для памяти. SCHEMA_AND_DATA — это значение по умолчанию для таблиц, оптимизированных для памяти. Значение SCHEMA_ONLY указывает, что табличные данные не будут сохранены после перезапуска базы данных с объектами, оптимизированными для памяти.
is_memory_optimized bit Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.

Допустимы следующие значения:

0 = не оптимизировано для памяти.

1 = оптимизировано для памяти

Значение по умолчанию — 0.

Оптимизированные для памяти таблицы — это хранящиеся в памяти пользовательские таблицы, схемы которых сохраняются на диске аналогично другим пользовательским таблицам. Доступ к оптимизированным для памяти таблицам можно осуществлять из скомпилированных в собственном коде хранимых процедур.
temporal_type tinyint Применимо к: SQL Server 2016 (13.x); и выше, а также База данных SQL Azure.

Числовое значение, представляющее тип таблицы

0 = NON_TEMPORAL_TABLE

1 = HISTORY_TABLE (связано с темпоральной таблицей)

2 = SYSTEM_VERSIONED_TEMPORAL_TABLE
temporal_type_desc nvarchar(60) Применимо к: SQL Server 2016 (13.x); и выше, а также База данных SQL Azure.

Текстовое описание типа таблицы

NON_TEMPORAL_TABLE

HISTORY_TABLE

SYSTEM_VERSIONED_TEMPORAL_TABLE
history_table_id int Применимо к: SQL Server 2016 (13.x); и выше, а также База данных SQL Azure.

Если temporal_type = 2 или ledger_type = 2, то возвращается object_id таблицы, которая хранит исторические данные для темпоральной таблицы, в противном случае возвращается значение NULL.
is_remote_data_archive_enabled bit Область применения: SQL Server 2016 (13.x) и более поздние версии, а также База данных SQL Azure.

Указывает, что для таблицы уже включено Stretch.

0 = для таблицы не включено Stretch.

1 = для таблицы включено Stretch.

Дополнительные сведения см. в разделе Stretch Database.
is_external bit Область применения: SQL Server 2016 (13.x) и более поздние версии, База данных SQL Azure, а также Azure Synapse Analytics.

Указывает, что таблица является внешней.

0 = таблица не является внешней.

1 = таблица является внешней.
history_retention_period int Применимо к: База данных SQL Azure.

Числовое значение, представляющее длительность периода хранения темпорального журнала в единицах, указанных с помощью history_retention_period_unit.
history_retention_period_unit int Применимо к: База данных SQL Azure.

Числовое значение, представляющее тип единицы периода хранения темпорального журнала.

-1: НЕТ ОГРАНИЧЕНИЙ

3: ДЕНЬ

4: НЕДЕЛЯ

5: МЕСЯЦ

6: ГОД
history_retention_period_unit_desc nvarchar(10) Применимо к: База данных SQL Azure.

Текстовое описание типа единицы хранения темпорального журнала.

INFINITE

DAY

WEEK

MONTH

YEAR
is_node bit Применимо к: SQL Server 2017 (14.x); и База данных SQL Azure.

1 = это таблица узла графа.

0 = это не таблица узла графа.
is_edge bit Применимо к: База данных SQL Azure.

1 = это таблица пограничных вычислений графа.

0 = это не таблица пограничных вычислений графа.
ledger_type tinyint Применимо к: начиная с SQL Server 2022 (16.x) Azure SQL Database.

Числовое значение указывает, является ли таблица таблицей реестра.

0 = NON_LEDGER_TABLE
1 = HISTORY_TABLE (связана с обновляемой таблицей реестра)
2 = UPDATABLE_LEDGER_TABLE
3 = APPEND_ONLY_LEDGER_TABLE

Дополнительные сведения о реестре базы данных см. в статье Реестр.
ledger_type_desc nvarchar(60) Применимо к: начиная с SQL Server 2022 (16.x) Azure SQL Database.

Текстовое описание значения в столбце ledger_type:

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE
ledger_view_id int Применимо к: начиная с SQL Server 2022 (16.x) Azure SQL Database.

Если ledger_type — IN (2,3), то возвращается object_id представления реестра, в противном случае возвращается значение NULL.
is_dropped_ledger_table bit Применимо к: начиная с SQL Server 2022 (16.x) Azure SQL Database.

Указывает таблицу реестра, которая была удалена.

Разрешения

Видимость метаданных в представлениях каталогов ограничивается защищаемыми объектами, которыми пользователь владеет или на которые ему были предоставлены разрешения. Дополнительные сведения см. в разделе Metadata Visibility Configuration.

Примеры

В следующем примере возвращаются все пользовательские таблицы, у которых нет первичного ключа.

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  
  

В следующем примере показано, как можно предоставлять связанные темпоральные данные.

Применимо к: SQL Server 2016 (13.x); и выше, а также База данных SQL 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  

В следующем примере показано, как можно предоставить сведения о хранении темпорального журнала.

Применимо к: База данных SQL 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 

См. также:

Представления каталога объектов (Transact-SQL)
Представления каталога (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
DBCC CHECKTABLE (Transact-SQL)
Часто задаваемые вопросы о запросах к системному каталогу сервера SQL Server
In-Memory OLTP (оптимизация в памяти)