sys.tables (Transact-SQL)
適用于:SQL Server
Azure SQL資料庫
Azure SQL 受控執行個體Azure Synapse
Analytics Analytics
Platform System (PDW)
傳回SQL Server中每個使用者資料表的資料列。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
<繼承的資料行> | 如需此檢視繼承的資料行清單,請參閱 sys.objects (Transact-SQL) 。 | |
lob_data_space_id | int | 非零值是存放這份資料表的大型物件二進位 (LOB) 資料之資料空間 (檔案群組或分割區配置) 的識別碼。 LOB 資料類型的範例包括 Varbinary (max) 、 Varchar (max) 、 geography或 xml。 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 (記憶體中最佳化)