sys.tables (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

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

Имя столбца Тип данных Description
<inherited columns> Список столбцов, наследуемых этим представлением, см. в разделе 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 (присоединение filegroup_id)
max_column_id_used int Максимальный идентификатор столбца, когда-либо использованный в таблице.
lock_on_bulk_load bit Таблица заблокирована при массовой загрузке. Дополнительные сведения см. в статье sp_tableoption (Transact-SQL).
uses_ansi_nulls bit Таблица была создана с параметром SET ANSI_NULLSONбазы данных.
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 CHECKTABLEуспешного DBCC CHECKDB выполнения.
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 1 = таблица имеет тип FileTable.

Дополнительные сведения о таблицах FileTable см. в разделе Таблицы FileTable (SQL Server).

Область применения: SQL Server 2012 (11.x) и более поздних версий и База данных SQL Azure
is_memory_optimized bit Допустимы следующие значения:

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

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

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

Область применения: SQL Server 2014 (12.x) и более поздних версий и База данных SQL Azure.
durability tinyint Возможные следующие значения.

0 = SCHEMA_AND_DATA
1 = SCHEMA_ONLY

Значением 0 по умолчанию является значение по умолчанию.

Область применения: SQL Server 2014 (12.x) и более поздних версий и База данных SQL Azure
durability_desc nvarchar(60) Допустимы следующие значения:

SCHEMA_ONLY
SCHEMA_AND_DATA

Значение SCHEMA_AND_DATA указывает, что таблица является устойчивой, в памяти таблицей. SCHEMA_AND_DATA — значение по умолчанию для оптимизированных для памяти таблиц. Значение SCHEMA_ONLY указывает, что данные таблицы не сохраняются при перезапуске базы данных с оптимизированными для памяти объектами.

Область применения: SQL Server 2014 (12.x) и более поздних версий и База данных SQL Azure
temporal_type tinyint Числовое значение, представляющее тип таблицы

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

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL Azure
temporal_type_desc nvarchar(60) Текстовое описание типа таблицы

NON_TEMPORAL_TABLE
HISTORY_TABLE
SYSTEM_VERSIONED_TEMPORAL_TABLE

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

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL Azure
is_remote_data_archive_enabled bit Указывает, что для таблицы уже включено Stretch.

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

Дополнительные сведения см. в разделе Stretch Database.

Область применения: SQL Server 2016 (13.x) и более поздних версий и База данных SQL Azure
is_external bit Указывает, что таблица является внешней.

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

Область применения: SQL Server 2016 (13.x) и более поздних версий, База данных SQL Azure и Azure Synapse Analytics
history_retention_period int Числовое значение, представляющее длительность периода хранения темпорального журнала в единицах, указанных в history_retention_period_unit.

Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL Azure
history_retention_period_unit int Числовое значение, представляющее тип единицы периода хранения темпорального журнала.

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

Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL Azure
history_retention_period_unit_desc nvarchar(10) Текстовое описание типа единицы хранения темпорального журнала.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL Azure
is_node bit 1 = таблица узлов Graph.
0 = не таблица узлов графа.

Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL Azure
is_edge bit 1 = таблица пограничных вычислений графа.
0 = не таблица границ графа.

Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL Azure
data_retention_period int Числовое значение, представляющее длительность периода хранения данных в единицах, указанных в data_retention_period_unit.

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

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

Применяется только к: Только для пограничных вычислений SQL Azure
data_retention_period_unit_desc nvarchar(10) Текстовое описание типа единицы хранения данных.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

Применяется только к: Только для пограничных вычислений SQL Azure
ledger_type tinyint Числовое значение указывает, является ли таблица таблицей реестра.

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

Дополнительные сведения о реестре базы данных см. в статье Реестр.

Область применения: SQL Server 2022 (16.x) и более поздних версий и База данных SQL Azure
ledger_type_desc nvarchar(60) Текстовое описание значения в столбце ledger_type :

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE

Область применения: SQL Server 2022 (16.x) и более поздних версий и База данных SQL Azure
ledger_view_id int Если ledger_type IN (2, 3) возвращается object_id представление реестра, в противном случае возвращается NULL.

Область применения: SQL Server 2022 (16.x) и более поздних версий и База данных SQL Azure
is_dropped_ledger_table bit Указывает таблицу реестра, которая была удалена.

Область применения: SQL Server 2022 (16.x) и более поздних версий и База данных SQL Azure

Разрешения

Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или которым пользователь получил некоторое разрешение. Дополнительные сведения см. в разделе 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;

C. Перечисление сведений о хранении темпорального журнала

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

Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных 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;