sys.tables (Transact-SQL)

適用于:SQL ServerAzure SQL資料庫Azure SQL 受控執行個體Azure SynapseAnalytics AnalyticsPlatform System (PDW)

傳回SQL Server中每個使用者資料表的資料列。

資料行名稱 資料類型 描述
<繼承的資料行> 如需此檢視繼承的資料行清單,請參閱 sys.objects (Transact-SQL)
lob_data_space_id int 非零值是存放這份資料表的大型物件二進位 (LOB) 資料之資料空間 (檔案群組或分割區配置) 的識別碼。 LOB 資料類型的範例包括 Varbinary (max) Varchar (max) geographyxml

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_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 = 未設定 [資料列中的文字] 選項。 如需詳細資訊,請參閱 sp_tableoption (Transact-SQL)
large_value_types_out_of_row bit 1 = 大數值類型是以 out-of-row 的方式來儲存。 如需詳細資訊,請參閱 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 Database。

1 = 資料表是 FileTable。

如需 FileTable 的詳細資訊,請參閱FileTables (SQL Server)
持久性 tinyint 適用于:SQL Server 2014 (12.x) 和更新版本和 Azure SQL Database。

以下是可能的值:

0 = SCHEMA_AND_DATA

1 = SCHEMA_ONLY

預設值為 0 值。
durability_desc nvarchar(60) 適用于:SQL Server 2014 (12.x) 和更新版本和 Azure SQL Database。

以下是可能的值:

SCHEMA_ONLY

SCHEMA_AND_DATA

SCHEMA_AND_DATA 的值表示資料表是持久、記憶體中的資料表。 SCHEMA_AND_DATA 是記憶體最佳化資料表的預設值。 SCHEMA_ONLY值表示資料表資料不會在具有記憶體優化物件的資料庫重新開機時保存。
is_memory_optimized bit 適用于:SQL Server 2014 (12.x) 及更新版本和 Azure SQL Database。

以下是可能的值:

0 = 不是記憶體最佳化的。

1 = 是記憶體最佳化的。

預設值是 0 值。

記憶體最佳化的資料表是記憶體中的使用者資料表,其結構描述保存在磁碟上,類似於其他使用者資料表。 記憶體最佳化的資料表可以從原生編譯預存程序存取。
temporal_type tinyint 適用于:SQL Server 2016 (13.x) 及更新版本和 Azure SQL Database。

代表資料表類型的數值:

0 = NON_TEMPORAL_TABLE

1 = 與時態表相關聯的HISTORY_TABLE ()

2 = SYSTEM_VERSIONED_TEMPORAL_TABLE
temporal_type_desc nvarchar(60) 適用于:SQL Server 2016 (13.x) 及更新版本和 Azure SQL Database。

資料表類型的文字描述:

NON_TEMPORAL_TABLE

HISTORY_TABLE

SYSTEM_VERSIONED_TEMPORAL_TABLE
history_table_id int 適用于:SQL Server 2016 (13.x) 及更新版本和 Azure SQL Database。

當 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:日

4:周

5:月

6: YEAR
history_retention_period_unit_desc Nvarchar (10) 適用于:Azure SQL資料庫。

時態歷程記錄保留期間單位類型的文字描述。

INFINITE

DAY

WEEK



is_node bit 適用于:SQL Server 2017 (14.x) 和 Azure SQL Database。

1 = 這是圖形節點資料表。

0 = 這不是圖形節點資料表。
is_edge bit 適用于:Azure SQL資料庫。

1 = 這是圖形 Edge 資料表。

0 = 這不是圖形 Edge 資料表。
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資料行中值的文字描述:

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 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  

下列範例示範如何公開暫時性歷程記錄保留的相關資訊。

適用于: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 系統目錄 FAQ
In-Memory OLTP (記憶體中最佳化)