sys.columns (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲
針對具有數據行的物件每個數據行,例如檢視或數據表,傳回一個數據列。 下列清單包含具有資料行的物件類型:
- 資料表值元件函式 (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 |
smallint | 數據行的最大長度(以位元組為單位)。-1 = 數據行數據類型為 varchar(max)、 nvarchar(max)、 varbinary(max)或 xml。若為 text、ntext 和 image 資料行,此值 max_length 為 16 (僅表示 16 位元組指標)或所sp_tableoption 'text in row' 設定的值。 |
precision |
tinyint | 如果以數值為基礎,則為數據行的有效位數;否則為 0 。 |
scale |
tinyint | 如果以數值為基礎,則為數據行小數字數;否則為 0 。 |
collation_name |
sysname | 如果以字元為基礎,則為數據行定序的名稱;否則 NULL 為 。 |
is_nullable |
bit | 1 = 資料行可為 Null0 = 資料行不可為 Null |
is_ansi_padded |
bit | 1 = 如果字元、二進位或變體,數據行會使用 ANSI_PADDING ON 行為0 = 資料行不是字元、二進位或變體 |
is_rowguidcol |
bit | 1 = Column 是宣告的 ROWGUIDCOL |
is_identity |
bit | 1 = 資料行具有識別值 |
is_computed |
bit | 1 = 資料列是計算資料列 |
is_filestream |
bit | 1 = 資料列是 FILESTREAM 資料行 |
is_replicated |
bit | 1 = 資料行已復寫 |
is_non_sql_subscribed |
bit | 1 = 資料行具有非 SQL Server 訂閱者 |
is_merge_published |
bit | 1 = 資料行已合併發行 |
is_dts_replicated |
bit | 1 = 使用 SSIS 複寫資料行 |
is_xml_document |
bit | 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 |
bit | 1 = Column 是疏鬆數據行。 如需詳細資訊,請參閱 使用疏鬆數據行。 |
is_column_set |
bit | 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 |
bit | 指出資料列是否隱藏:0 = 一般、不隱藏、可見的數據行1 = 隱藏資料列適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL 資料庫 |
is_masked |
bit | 指出資料行是否透過動態資料遮罩來遮罩:0 = 一般、未遮罩的數據行1 = 資料行已遮罩適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL 資料庫 |
graph_type |
int | 具有一組值的內部數據行。 這些值介於 1 和 8 之間,適用於圖表數據行,以及其他 NULL 值。 |
graph_type_desc |
nvarchar(60) | 僅供參考之用。 不支援。 我們無法保證未來的相容性。 |
is_data_deletion_filter_column |
bit | 指出數據行是否為數據表的數據保留篩選數據行。 適用於: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 |
bit | 表示已卸除的總賬數據表數據行。 適用於:SQL Server 2022 (16.x) 和更新版本,以及 SQL 資料庫 |
權限
目錄檢視內中繼資料的可見性會限制在使用者所擁有的安全性實體,或已授與使用者某些權限的安全性實體。 如需相關資訊,請參閱 Metadata Visibility Configuration。
使用範例
取得數據表的數據行詳細數據
若要取得資料表中資料列的元數據,您可以使用下列程式代碼:
CREATE TABLE dbo.[sample] (
id INT NOT NULL
,col1 VARBINARY(10) NULL
)
GO
SELECT c.[name] AS column_name
,t.[name] AS [type_name]
,c.[max_length]
,c.[precision]
,c.[scale]
FROM sys.columns c
INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE object_id = object_id('dbo.sample');