sys.types (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库

每个系统类型和用户定义类型都在表中对应一行。

列名称 数据类型 描述
name sysname 类型的名称。 在架构内是唯一的。
system_type_id tinyint 内部系统类型的 ID。
user_type_id int 类型的 ID。 在该数据库中是唯一的。

CLR 程序集类型(如 hierarchyidgeometrygeography)将具有不同的 system_type_id类型,并且可以使用 < a0/> 进行 is_assembly_type标识。 sysname 数据类型是基于 nvarchar 的内部数据类型。
schema_id int 类型所属架构的 ID。
principal_id int 如果个体所有者与架构所有者不同,则表示该所有者的 ID。 默认情况下,架构包含的对象由架构所有者拥有。 不过,通过使用 ALTER AUTHORIZATION 语句更改所有权可以指定备用所有者。

NULL 如果没有备用的个人所有者。
max_length smallint 类型的最大长度(字节)。

-1 = 列数据类型为 varchar(max)nvarchar(max)varbinary(max)xml
对于 文本 列,该值 max_length 将为 16。
precision tinyint 如果类型基于数值,则表示类型的最大精度;否则,该值为 0。
scale tinyint 如果类型基于数值,则表示类型的最大小数位数;否则,该值为 0。
collation_name sysname 类型排序规则的名称(如果它基于字符);否则为 NULL.
is_nullable bit 类型可以为 Null。
is_user_defined bit 1 = 用户定义的类型。

0 = SQL Server 系统数据类型。
is_assembly_type bit 1 = 类型实现在 CLR 程序集中定义。

0 = 类型基于 SQL Server 系统数据类型。
default_object_id int 使用 sp_bindefault 绑定到类型的独立默认值的 ID。

0 = 不存在默认值。
rule_object_id int 使用 sp_bindrule 绑定到类型的独立规则的 ID。

0 = 不存在规则。
is_table_type bit 指示该类型为表。

权限

目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。 有关详细信息,请参阅 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');