sys.tables (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス

SQL Server データベース内の各ユーザー テーブルの行を返します。

列名 データ型 説明
<inherited columns> このビューが継承する列の一覧については、「sys.objects (Transact-SQL)」を参照してください。
lob_data_space_id int 0 以外の値は、このテーブルのラージ オブジェクト バイナリ (LOB) データを格納するデータ領域 (ファイル グループまたはパーティション構成) の ID です。 LOB データ型の例は、varbinary(max)varchar(max)geographyxml などです。

0 = テーブルに LOB データがありません。
filestream_data_space_id int FILESTREAM ファイル グループまたは FILESTREAM ファイル グループで構成されるパーティション構成のデータ領域 ID。

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 このテーブルでこれまでに使用された最大の列 ID。
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中に定義が変更されたアセンブリに依存する永続化されたデータが含まれます。 次に成功した DBCC CHECKDB または DBCC CHECKTABLE後、0 にリセットされます。
text_in_row_limit int text in row で許可される最大バイト数です。

0 = text in row オプションは設定されていません。 詳細については、「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 オプションについての説明テキストです。 有効な値は TABLEAUTODISABLE です。
is_filetable bit 1 = テーブルは FileTable です。

FileTable の詳細については、「FileTable (SQL Server)」を参照してください。

適用対象: SQL Server 2012 (11.x) 以降のバージョンと Azure SQL Database
is_memory_optimized bit 使用できる値を次に示します。

0 = メモリ最適化ではありません。
1 = メモリ最適化です。

値 0 が既定の値です。

メモリ最適化テーブルは、他のユーザー テーブルと同様にスキーマがディスク上に保存されるメモリ内のユーザー テーブルです。 メモリ最適化テーブルには、ネイティブ コンパイル ストアド プロシージャからアクセスできます。

適用対象: SQL Server 2014 (12.x) 以降のバージョンと Azure SQL Database。
durability tinyint 返される値は次のとおりです。

0 = SCHEMA_AND_DATA
1 = SCHEMA_ONLY

0の値が既定値です。

適用対象: SQL Server 2014 (12.x) 以降のバージョン、および Azure SQL Database
durability_desc nvarchar(60) 使用できる値を次に示します。

SCHEMA_ONLY
SCHEMA_AND_DATA

SCHEMA_AND_DATAの値は、テーブルが永続的なメモリ内テーブルであることを示します。 SCHEMA_AND_DATA は、メモリ最適化テーブルの既定値です。 SCHEMA_ONLYの値は、メモリ最適化オブジェクトを使用してデータベースを再起動したときにテーブル データが永続化されていないことを示します。

適用対象: SQL Server 2014 (12.x) 以降のバージョン、および Azure SQL Database
temporal_type tinyint テーブルの種類を表す数値:

0 = NON_TEMPORAL_TABLE
1 = HISTORY_TABLE (テンポラル テーブルに関連付けられています)
2 = SYSTEM_VERSIONED_TEMPORAL_TABLE

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および Azure SQL Database
temporal_type_desc nvarchar(60) テーブルの種類のテキストテキスト:

NON_TEMPORAL_TABLE
HISTORY_TABLE
SYSTEM_VERSIONED_TEMPORAL_TABLE

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および Azure SQL Database
history_table_id int temporal_type2またはledger_type2されている場合は、テンポラル テーブルの履歴データを保持するテーブルのobject_idを返し、それ以外の場合はNULLを返します。

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および Azure SQL Database
is_remote_data_archive_enabled bit テーブルが Stretch 対応かどうかを示します。

0 = テーブルが Stretch 対応ではありません。
1 = テーブルが Stretch 対応です。

詳細については、「 Stretch Database」を参照してください。

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および Azure SQL Database
is_external bit テーブルが外部テーブルであることを示します。

0 = テーブルが外部テーブルではありません。
1 = テーブルが外部テーブルです。

適用対象: SQL Server 2016 (13.x) 以降のバージョン、Azure SQL Database、および Azure Synapse Analytics
history_retention_period int history_retention_period_unitで指定された単位で、テンポラル履歴保有期間の期間を表す数値。

適用対象: SQL Server 2017 (14.x) 以降のバージョンと Azure SQL Database
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) 以降のバージョンと Azure SQL Database
history_retention_period_unit_desc nvarchar(10) テンポラル履歴保有期間の単位の種類のテキスト説明。

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

適用対象: SQL Server 2017 (14.x) 以降のバージョンと Azure SQL Database
is_node bit 1 = グラフ ノード テーブル。
0 = グラフ ノード テーブルではありません。

適用対象: SQL Server 2017 (14.x) 以降のバージョンと Azure SQL Database
is_edge bit 1 = グラフ エッジ テーブル。
0 = グラフ エッジ テーブルではありません。

適用対象: SQL Server 2017 (14.x) 以降のバージョンと Azure SQL Database
data_retention_period int data_retention_period_unitで指定された単位でデータ保有期間の期間を表す数値。

適用対象: Azure SQL Edge "のみ"
data_retention_period_unit int データ保有期間単位の種類を表す数値。

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

適用対象: Azure SQL Edge "のみ"
data_retention_period_unit_desc nvarchar(10) データ保持期間単位の種類のテキストの説明。

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

適用対象: Azure SQL Edge "のみ"
ledger_type tinyint テーブルが台帳テーブルであるかどうかを示す数値。

0 = NON_LEDGER_TABLE
1 = HISTORY_TABLE (更新可能な台帳テーブルに関連付けられています)
2 = UPDATABLE_LEDGER_TABLE
3 = APPEND_ONLY_LEDGER_TABLE

データベース台帳の詳細については、台帳に関する記事を参照してください。

適用対象: SQL Server 2022 (16.x) 以降のバージョン、および Azure SQL Database
ledger_type_desc nvarchar(60) ledger_type列の値のテキストの説明:

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE

適用対象: SQL Server 2022 (16.x) 以降のバージョン、および Azure SQL Database
ledger_view_id int ledger_type IN (2, 3)が台帳ビューのobject_idを返す場合は、それ以外の場合はNULLを返します。

適用対象: SQL Server 2022 (16.x) 以降のバージョン、および Azure SQL Database
is_dropped_ledger_table bit 削除された台帳テーブルを示します。

適用対象: SQL Server 2022 (16.x) 以降のバージョン、および Azure SQL Database

アクセス許可

カタログ ビューでのメタデータの可視性は、ユーザーが所有しているか、ユーザーに何らかのアクセス許可が付与されているセキュリティ保護可能なリソースに限定されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。

A. 主キーを使用せずにすべてのユーザー テーブルを返す

次の例は、主キーを含まないすべてのユーザー テーブルを返します。

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) 以降のバージョンと 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: 一時的な履歴の保持に関する情報を一覧表示する

次の例は、テンポラル履歴の保有に関する情報を公開する方法を示しています。

適用対象: SQL Server 2017 (14.x) 以降のバージョンと 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;