共用方式為


sys.columns (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics分析平台系統(PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲Microsoft Fabric 中的 SQL 資料庫

針對具有數據行的物件每個數據行,例如檢視或數據表,傳回一個數據列。 下列清單包含具有資料行的物件類型:

  • 資料表值元件函式 (FT)
  • 內嵌資料表值 SQL 函式 (IF)
  • 內部資料表 (IT)
  • 系統資料表 (S)
  • 資料表值 SQL 函式 (TF)
  • 使用者資料表 (U)
  • 檢視 (V)
資料行名稱 資料類型 描述
object_id int 這個數據行所屬之對象的標識碼。
name sysname 資料行的名稱。 在物件中是唯一的。
column_id int 數據行的識別碼。 在物件中是唯一的。 數據行標識碼可能不是循序的。
system_type_id tinyint 數據行之系統類型的識別碼。
user_type_id int 使用者所定義之數據行類型的識別碼。 若要傳回類型的名稱,請聯結至 此數據行上的 sys.types 目錄檢視。
max_length 小整數 數據行的最大長度(以位元組為單位)。

-1 = 數據行數據類型為 varchar(max)nvarchar(max)varbinary(max)xml

若為 text、ntext
precision tinyint 如果以數值為基礎,則為數據行的有效位數;否則為 0
scale tinyint 如果以數值為基礎,則為數據行小數字數;否則為 0
collation_name sysname 如果以字元為基礎,則為數據行定序的名稱;否則 NULL為 。
is_nullable 位元 1 = 資料行可為 Null
0 = 資料行不可為 Null
is_ansi_padded 位元 1 = 如果字元、二進位或變體,數據行會使用 ANSI_PADDING ON 行為

0 = 資料行不是字元、二進位或變體
is_rowguidcol 位元 1 = Column 是宣告的 ROWGUIDCOL
is_identity 位元 1 = 資料行具有識別值
is_computed 位元 1 = 資料列是計算資料列
is_filestream 位元 1 = 資料列是 FILESTREAM 資料行
is_replicated 位元 1 = 資料行已復寫
is_non_sql_subscribed 位元 1 = 資料行具有非 SQL Server 訂閱者
is_merge_published 位元 1 = 資料行已合併發行
is_dts_replicated 位元 1 = 使用 SSIS 複寫資料行
is_xml_document 位元 1 = 內容是完整的 XML 檔

0 = 內容是檔片段,或數據行數據類型不是 xml
xml_collection_id int 如果數據行的數據類型為 xml,且 XML 的類型為 , 則為非零。 值是集合的標識碼,其中包含數據行的驗證 XML 架構命名空間

0 = 沒有 XML 架構集合
default_object_id int 默認物件的標識碼,不論它是獨立物件 sp_bindefault或內嵌的數據行層級 DEFAULT 條件約束。 parent_object_id內嵌欄位層級預設物件的欄位是回溯到資料表本身的參考。

0 = 沒有預設值
rule_object_id int 綁定於欄位 sys.sp_bindrule的獨立規則的識別碼。

0 = 沒有獨立規則。 如需數據行層級 CHECK 的條件約束,請參閱 sys.check_constraints
is_sparse 位元 1 = Column 是疏鬆數據行。 如需詳細資訊,請參閱 使用疏鬆數據行
is_column_set 位元 1 = 資料列是資料行集。 如需詳細資訊,請參閱 使用疏鬆數據行
generated_always_type tinyint 識別何時產生數據行值(一律 0 適用於系統數據表中的數據行)。

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL Database。

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

適用於:SQL Server 2022 (16.x) 和更新版本,以及 SQL 資料庫。

5 = AS_TRANSACTION_ID_START
6 = AS_TRANSACTION_ID_END
7 = AS_SEQUENCE_NUMBER_START
8 = AS_SEQUENCE_NUMBER_END

如需相關資訊,請參閱時態表
generated_always_type_desc nvarchar(60) 值的文字描述 generated_always_type (一律 NOT_APPLICABLE 適用於系統資料表中的資料列)

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL Database。

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

適用於:SQL Server 2022 (16.x) 和更新版本,以及 SQL 資料庫。

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type int 加密類型:

1 = 確定性加密
2 = 隨機化加密

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL 資料庫
encryption_type_desc nvarchar(64) 加密類型描述:

RANDOMIZED
DETERMINISTIC

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL 資料庫
encryption_algorithm_name sysname 加密演算法的名稱。 只支援 AEAD_AES_256_CBC_HMAC_SHA_512

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL 資料庫
column_encryption_key_id int 數據行加密金鑰 (CEK) 的識別碼。

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL 資料庫
column_encryption_key_database_name sysname 如果數據行加密金鑰與資料列的資料庫不同,則為資料庫的名稱。 NULL 如果索引鍵存在於與資料行相同的資料庫中,則為 。

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL 資料庫
is_hidden 位元 指出資料列是否隱藏:

0 = 一般、不隱藏、可見的數據行
1 = 隱藏資料列

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL 資料庫
is_masked 位元 指出資料行是否透過動態資料遮罩來遮罩:

0 = 一般、未遮罩的數據行
1 = 資料行已遮罩

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL 資料庫
graph_type int 具有一組值的內部數據行。 這些值介於 18 之間,適用於圖表數據行,以及其他 NULL 值。
graph_type_desc nvarchar(60) 僅供參考之用。 不支援。 我們無法保證未來的相容性。
is_data_deletion_filter_column 位元 指出數據行是否為數據表的數據保留篩選數據行。

適用於:Azure SQL Edge
ledger_view_column_type int 如果不是 NULL,表示總賬檢視中的數據行類型:

1 = TRANSACTION_ID
2 = SEQUENCE_NUMBER
3 = OPERATION_TYPE
4 = OPERATION_TYPE_DESC

如需詳細資訊,請參閱 總帳概觀

適用於:SQL Server 2022 (16.x) 和更新版本,以及 SQL 資料庫
ledger_view_column_type_desc nvarchar(60) 如果沒有 NULL,則包含分類帳檢視中資料行類型的文字描述:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

適用於:SQL Server 2022 (16.x) 和更新版本,以及 SQL 資料庫
is_dropped_ledger_column 位元 表示已卸除的總賬數據表數據行。

適用於:SQL Server 2022 (16.x) 和更新版本,以及 SQL 資料庫
vector_dimensions int 表示向量的維度數。

適用於:SQL Server 2025(17.x)及以上版本,以及 SQL 資料庫
vector_base_type tinyint 指出用來儲存向量維度值的數據類型。

0 = 32 位元(單精度)浮點數
1 = 16位元(半精度)浮點 數 1

適用於:SQL Server 2025(17.x)及以上版本,以及 SQL 資料庫
vector_base_type_desc nvarchar(10) 包含用來儲存向量維度值的數據類型文字描述。

適用於:SQL Server 2025(17.x)及以上版本,以及 SQL 資料庫

1 欲了解更多資訊,請參見 半精度浮點格式

權限

目錄檢視內中繼資料的可見性會限制在使用者所擁有的安全性實體,或已授與使用者某些權限的安全性實體。 如需詳細資訊,請參閱中 繼資料可見度設定

使用範例

取得數據表的數據行詳細數據

要取得資料表中欄位的元資料,請使用以下程式碼:

CREATE TABLE dbo.[sample]
(
    id INT NOT NULL,
    col1 VARBINARY (10) NULL
);

SELECT c.[name] AS column_name,
       t.[name] AS [type_name],
       c.[max_length],
       c.[precision],
       c.[scale]
FROM sys.columns AS c
     INNER JOIN sys.types AS t
         ON c.user_type_id = t.user_type_id
WHERE object_id = object_id('dbo.sample');