sys.tables (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL エンドポイントMicrosoft Fabric のウェアハウス

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

列名 データ型 説明
<継承された列> このビューが継承する列の一覧については、「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 オプションについての説明テキストです。 有効値は、TABLE、AUTO、および DISABLE です。
is_filetable bit 適用対象: SQL Server 2012 (11.x) 以降と Azure SQL データベース。

1 = テーブルは FileTable です。

FileTable の詳細については、「FileTable (SQL Server)」を参照してください。
durability tinyint 適用対象: SQL Server 2014 (12.x) 以降と Azure SQL データベース。

返される値は次のとおりです。

0 = SCHEMA_AND_DATA

1 = SCHEMA_ONLY

値 0 が既定値です。
durability_desc nvarchar(60) 適用対象: SQL Server 2014 (12.x) 以降と Azure SQL データベース。

使用できる値を次に示します。

SCHEMA_ONLY

SCHEMA_AND_DATA

値 SCHEMA_AND_DATA は、テーブルが持続性のあるインメモリ テーブルであることを示します。 SCHEMA_AND_DATA は、メモリ最適化テーブルの既定値です。 値 SCHEMA_ONLY は、メモリ最適化オブジェクトでは、データベースを再起動した場合にテーブル データの更新内容が保存されないことを示します。
is_memory_optimized bit 適用対象: SQL Server 2014 (12.x) 以降と Azure SQL データベース。

使用できる値を次に示します。

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

1 = メモリ最適化です。

値 0 が既定の値です。

メモリ最適化テーブルは、他のユーザー テーブルと同様にスキーマがディスク上に保存されるメモリ内のユーザー テーブルです。 メモリ最適化テーブルには、ネイティブ コンパイル ストアド プロシージャからアクセスできます。
temporal_type tinyint 適用対象: SQL Server 2016 (13.x) 以降と Azure SQL データベース。

テーブルの種類を表す数値:

0 = NON_TEMPORAL_TABLE

1 = HISTORY_TABLE (テンポラル テーブルに関連付けられている)

2 = SYSTEM_VERSIONED_TEMPORAL_TABLE
temporal_type_desc nvarchar(60) 適用対象: SQL Server 2016 (13.x) 以降と Azure SQL データベース。

テーブルの種類のテキストテキスト:

NON_TEMPORAL_TABLE

HISTORY_TABLE

SYSTEM_VERSIONED_TEMPORAL_TABLE
history_table_id int 適用対象: SQL Server 2016 (13.x) 以降と Azure SQL データベース。

temporal_type = 2 または ledger_type = 2 の場合、テンポラル テーブルの履歴データを保持するテーブルの object_id が返され、それ以外の場合は NULL が返されます。
is_remote_data_archive_enabled bit 適用対象: SQL Server 2016 (13.x) 以降および Azure SQL Database

テーブルが Stretch 対応かどうかを示します。

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

1 = テーブルが Stretch 対応です。

詳細については、「 Stretch Database」を参照してください。
is_external bit 適用対象: SQL Server 2016 (13.x) 以降、Azure SQL Database、および Azure Synapse Analytics。

テーブルが外部テーブルであることを示します。

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

1 = テーブルが外部テーブルです。
history_retention_period int 適用対象: Azure SQL データベース

テンポラル履歴保有期間の長さを history_retention_period_unit で指定された単位で表す数値。
history_retention_period_unit int 適用対象: Azure SQL データベース

テンポラル履歴保有期間の単位の種類を表す数値。

-1: INFINITE

3: DAY

4: WEEK

5: MONTH

6: YEAR
history_retention_period_unit_desc nvarchar(10) 適用対象: Azure SQL データベース

テンポラル履歴保有期間の単位の種類のテキスト説明。

無限

DAY

[WEEK]

MONTH

YEAR
is_node bit 適用対象: SQL Server 2017 (14.x) および Azure SQL データベース。

1 = これはグラフ ノード テーブルです。

0 = これはグラフ ノード テーブルではありません。
is_edge bit 適用対象: Azure SQL データベース

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 column 列の値のテキスト説明:

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) 以降と Azure SQL データベース。

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  

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

適用対象: Azure SQL データベース

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 システム カタログに対するクエリに関してよく寄せられる質問
インメモリ OLTP (インメモリ最適化)