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)、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 | 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_type が2 またはledger_type が2 されている場合は、テンポラル テーブルの履歴データを保持するテーブルの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
B. テンポラル データ関連テーブルを一覧表示する
次の例は、関連するテンポラル データを公開する方法を示しています。
適用対象: 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;