sys.tables (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 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 | 非零值是保存此資料表大型物件二進位 (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 | 數據表是使用資料庫選項 ON 建立的SET ANSI_NULLS 。 |
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 | 1 = Table 是 FileTable。 如需 FileTable 的詳細資訊,請參閱 FileTables (SQL Server) 。 適用於:SQL Server 2012 (11.x) 和更新版本,以及 Azure SQL 資料庫 |
is_memory_optimized |
bit | 以下是可能的值: 0 = 記憶體優化。 1 = 記憶體優化。 值為 0 是預設值。 記憶體優化數據表是記憶體內部用戶數據表,其架構會保存在磁碟上,類似於其他用戶數據表。 您可以從原生編譯預存程式存取記憶體優化數據表。 適用於:SQL Server 2014 (12.x) 和更新版本,以及 Azure SQL 資料庫。 |
durability |
tinyint | 以下是可能的值: 0 = SCHEMA_AND_DATA 1 = SCHEMA_ONLY 的值 0 是預設值。適用於:SQL Server 2014 (12.x) 和更新版本,以及 Azure SQL 資料庫 |
durability_desc |
nvarchar(60) | 以下是可能的值:SCHEMA_ONLY SCHEMA_AND_DATA 的值 SCHEMA_AND_DATA 表示數據表是永久性的記憶體內部數據表。 SCHEMA_AND_DATA 是記憶體優化數據表的預設值。 的值 SCHEMA_ONLY 表示數據表數據不會在具有記憶體優化物件的資料庫重新啟動時保存。適用於:SQL Server 2014 (12.x) 和更新版本,以及 Azure SQL 資料庫 |
temporal_type |
tinyint | 代表資料表型態的數值: 0 = NON_TEMPORAL_TABLE 1 = HISTORY_TABLE (與時態表相關聯)2 = SYSTEM_VERSIONED_TEMPORAL_TABLE 適用於:SQL Server 2016 (13.x) 和更新版本,以及 Azure SQL 資料庫 |
temporal_type_desc |
nvarchar(60) | 資料表型態的文字描述:NON_TEMPORAL_TABLE HISTORY_TABLE SYSTEM_VERSIONED_TEMPORAL_TABLE 適用於:SQL Server 2016 (13.x) 和更新版本,以及 Azure SQL 資料庫 |
history_table_id |
int | 當為 2 或 ledger_type 時2 temporal_type 態表時,傳回object_id 維護時態表歷程記錄資料的數據表,否則會傳NULL 回 。適用於:SQL Server 2016 (13.x) 和更新版本,以及 Azure SQL 資料庫 |
is_remote_data_archive_enabled |
bit | 指出數據表是否已啟用 Stretch。 0 = 資料表未啟用 Stretch。 1 = 資料表已啟用 Stretch。 如需詳細資訊,請參閱 Stretch Database。 適用於:SQL Server 2016 (13.x) 和更新版本,以及 Azure SQL 資料庫 |
is_external |
bit | 表示數據表是外部數據表。 0 = 資料表不是外部資料表。 1 = 資料表是外部資料表。 適用於:SQL Server 2016 (13.x) 和更新版本、Azure SQL 資料庫 和 Azure Synapse Analytics |
history_retention_period |
int | 數值,表示以 指定的 history_retention_period_unit 單位表示時態歷程記錄保留期間持續時間。適用於:SQL Server 2017 (14.x) 和更新版本,以及 Azure SQL 資料庫 |
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 資料庫 |
history_retention_period_unit_desc |
nvarchar(10) | 時態歷程記錄保留期間單位類型的文字描述。INFINITE SECOND MINUTE HOUR DAY WEEK MONTH YEAR 適用於:SQL Server 2017 (14.x) 和更新版本,以及 Azure SQL 資料庫 |
is_node |
bit | 1 = 圖形節點數據表。 0 = 不是圖形節點數據表。 適用於:SQL Server 2017 (14.x) 和更新版本,以及 Azure SQL 資料庫 |
is_edge |
bit | 1 = Graph 邊緣數據表。 0 = 不是圖形邊緣數據表。 適用於:SQL Server 2017 (14.x) 和更新版本,以及 Azure SQL 資料庫 |
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 資料庫 |
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 資料庫 |
ledger_view_id |
int | 傳回object_id 總賬檢視時ledger_type IN (2, 3) ,否則會傳NULL 回 。適用於:SQL Server 2022 (16.x) 和更新版本,以及 Azure SQL 資料庫 |
is_dropped_ledger_table |
bit | 表示已卸除的總賬數據表。 適用於:SQL Server 2022 (16.x) 和更新版本,以及 Azure SQL 資料庫 |
權限
目錄檢視內中繼資料的可見性會限制在使用者所擁有的安全性實體,或已授與使用者某些權限的安全性實體。 如需相關資訊,請參閱 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;