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 程序集类型(如 hierarchyid、 geometry 和 geography)将具有不同的 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');