sys.tables (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲

傳回 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 數據列中文字允許的最大位元元組數。

0 = 未設定資料列中的文字選項。 如需詳細資訊,請參閱 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 Database。

1 = Table 是 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 資料庫

指出數據表是否已啟用 Stretch。

0 = 資料表未啟用 Stretch。

1 = 資料表已啟用 Stretch。

如需詳細資訊,請參閱 Stretch Database
is_external bit 適用於:SQL Server 2016 (13.x) 和更新版本、Azure SQL 資料庫 和 Azure Synapse Analytics。

表示數據表是外部數據表。

0 = 資料表不是外部資料表。

1 = 資料表是外部資料表。
history_retention_period int 適用於:Azure SQL Database。

數值,表示以history_retention_period_unit指定的單位表示時態歷程記錄保留期間的持續時間。
history_retention_period_unit int 適用於:Azure SQL Database。

表示時態歷程記錄保留期間單位類型的數值。

-1: INFINITE

3:DAY

4:周

5:月

6: YEAR
history_retention_period_unit_desc nvarchar(10) 適用於:Azure SQL Database。

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

無限

一天





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

1 = 這是圖形節點數據表。

0 = 這不是圖形節點數據表。
is_edge bit 適用於:Azure SQL Database。

1 = 這是圖形 Edge 數據表。

0 = 這不是圖形 Edge 數據表。
ledger_type tinyint 適用於:從 SQL Server 2022 (16.x)開始,Azure SQL 資料庫。

數值表示數據表是否為總賬數據表。

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 資料庫。

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 資料庫。

當 ledger_type IN (2,3) 傳回總賬檢視object_id時,否則會傳回 NULL。
is_dropped_ledger_table bit 適用於:從 SQL Server 2022 (16.x)開始,Azure SQL 資料庫。

指出已卸除的總賬數據表。

權限

目錄檢視中元數據的可見度僅限於用戶擁有的安全性實體,或用戶獲授與某些許可權的安全性實體。 如需相關資訊,請參閱 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 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 

另請參閱

物件目錄檢視 (Transact-SQL)
目錄檢視 (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
DBCC CHECKTABLE (Transact-SQL)
查詢 SQL Server 系統目錄常見問題
In-Memory OLTP (記憶體中最佳化)