sys.tables (Transact-SQL)
適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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)、geography、xml などです。 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 (インメモリ最適化)