sys.columns (Transact-SQL)

适用于: SQL Server(所有受支持的版本) Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

为包含列的对象(如视图或表)的每一列返回一行。 下面是包含列的对象类型的列表。

  • 表值程序集函数 (FT)

  • 内联表值 SQL 函数 (IF)

  • 内部表 (IT)

  • 系统表 (S)

  • 表值 SQL 函数 (TF)

  • 用户表 (U)

  • 视图 (V)

列名称 数据类型 说明
object_id int 此列所属对象的 ID。
name sysname 列的名称。 在对象中是唯一的。
column_id int 列的 ID。 在对象中是唯一的。

列 ID 可以不按顺序排列。
system_type_id tinyint 列的系统类型的 ID。
user_type_id int 用户定义的列类型的 ID。

若要返回类型的名称,请联接此列上的 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' 设置的值。
精准率 tinyint 如果基于数值,则为该列的精度;否则为 0。
scale tinyint 如果基于数值,则为列的小数位数;否则为 0。
collation_name sysname 如果基于字符,则为该列排序规则的名称;否则为 NULL
is_nullable bit 1 = 列可为空。
is_ansi_padded bit 1 = 如果列为字符、二进制或变量类型,则该列使用 ANSI_PADDING ON 行为。

0 = 列不是字符、二进制或变量类型。
is_rowguidcol bit 1 = 列为声明的 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 架构命名空间的集合的 ID。

0 = 没有 XML 架构集合。
default_object_id int 默认对象的 ID,无论该对象是独立对象 sys.sp_bindefault 还是内联的列级 DEFAULT 约束。 内联列级默认对象的 parent_object_id 列是对该表本身的反引用。

0 = 无默认值。
rule_object_id int 使用 sys.sp_bindrule 绑定到列的独立规则的 ID。

0 = 无独立规则。 有关列级 CHECK 约束,请参阅 sys.check_constraints (Transact-SQL)
is_sparse bit 1 = 列为稀疏列。 有关详细信息,请参阅 使用稀疏列
is_column_set bit 1 = 列为列集。 有关详细信息,请参阅 使用稀疏列
generated_always_type tinyint 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。 5、6、7、8 仅适用于 SQL 数据库。

标识生成列值的时间(系统表中的列将始终为 0):

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END
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) 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。

generated_always_type 值的文本描述(系统表中的列总是 NOT_APPLICABLE)

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

适用于:从 2022 SQL Server (16.x) 开始,SQL 数据库

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type int 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。

加密类型:

1 = 确定性加密

2 = 随机加密
encryption_type_desc nvarchar(64) 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。

加密类型说明:

RANDOMIZED

DETERMINISTIC
encryption_algorithm_name sysname 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。

加密算法的名称。

仅支持 AEAD_AES_256_CBC_HMAC_SHA_512。
column_encryption_key_id int 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。

CEK 的 ID。
column_encryption_key_database_name sysname 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。

列加密密钥所在数据库的名称(如果不在列所在的数据库中)。 NULL(如果密钥与列位于同一数据库中)。
is_hidden bit 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。

指示列是否可以隐藏:

0 = 未隐藏的常规可见列

1 = 隐藏列
is_masked bit 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。

指示列是否由动态数据掩码进行掩码处理:

0 = 不进行掩码处理的常规列

1 = 列进行掩码处理
graph_type int 具有一组值的内部列。 对于图形列,这些值介于 1-8 之间;对于其他列,为 NULL
graph_type_desc nvarchar(60) 具有一组值的内部列
is_data_deletion_filter_column bit 适用于:Azure SQL Edge。 指示列是否为表的数据保留筛选列。
ledger_view_column_type tinyint 适用于:从 2022 SQL Server (16.x) 开始,SQL 数据库。

如果不是 NULL,则指明账本视图中列的类型:

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

有关数据库账本的详细信息,请参阅账本
ledger_view_column_type_desc nvarchar(60) 适用于:从 2022 SQL Server (16.x) 开始,SQL 数据库。

如果不是 NULL,则包含账本视图中列类型的文本描述:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC
is_dropped_ledger_table_column bit 适用于:从 SQL Server 2022 (16.x) 开始,SQL 数据库。

指示已删除的账本表列。

权限

目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。 有关详细信息,请参阅 Metadata Visibility Configuration

另请参阅

系统视图 (Transact-SQL)
对象目录视图 (Transact-SQL)
目录视图 (Transact-SQL)
查询 SQL Server 系统目录常见问题
sys.all_columns (Transact-SQL)
sys.system_columns (Transact-SQL)