sys.tables (Transact-SQL)

適用範圍: 是SQL Server (所有支援的版本) 是Azure SQL Database 是Azure SQL 受控執行個體 是Azure Synapse Analytics 是平行處理資料倉儲

針對 SQL Server 中的每個使用者資料表,各傳回一個資料列。

資料行名稱 資料類型 描述
<inherited columns> 如需此視圖所繼承之資料行的清單,請參閱sys. objects (transact-sql 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. 檔案群組

-sys.partition_schemes

-sys. 索引

-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 = 未設定 "text in row" 選項。 如需詳細資訊,請參閱 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 (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 Database。

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

代表時態歷程記錄保留週期單位之類型的數值。

-1:無限

3:日

4:周

5:月

6:年
history_retention_period_unit_desc Nvarchar (10) 適用於: Azure SQL Database。

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

INFINITE

DAY

WEEK



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

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

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

1 = 這是圖形邊緣資料表。

0 = 這不是圖形邊緣資料表。
ledger_type tinyint 適用於: Azure SQL Database。

數值指出資料表是否為總帳資料表。

0 = NON_LEDGER_TABLE
1 = 與可更新的分類帳資料表相關聯 HISTORY_TABLE ()
2 = UPDATABLE_LEDGER_TABLE
3 = APPEND_ONLY_LEDGER_TABLE

如需有關資料庫總帳的詳細資訊,請參閱Azure SQL Database 總帳
ledger_type_desc nvarchar(60) 適用於: Azure SQL Database。

Ledger_type 資料行中值的文字描述:

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE
ledger_view_id int 適用於: Azure SQL Database。

當 ledger_type 于 (2 時,3) 會傳回總帳視圖 object_id,否則會傳回 Null。
is_dropped_ledger_table bit 適用於: 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 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 SQL)
DBCC CHECKTABLE (transact-sql SQL)
查詢 SQL Server 系統目錄常見問題
記憶體內部 OLTP (記憶體內部最佳化)