You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server用户定义类型的目录视图位置及sys.objects不显示问题

关于sys.objects与自定义类型的目录视图疑问

为什么sys.objects查不到自定义类型?

虽然官方文档说明sys.objects包含数据库内用户定义的架构范围对象,但SQL Server对不同类型的架构范围对象做了细分,自定义标量类型并不属于sys.objects的覆盖范围。sys.objects主要收录表、视图、存储过程、触发器、函数这类常规可编程/存储对象,而自定义类型有专门的目录视图来管理。

你创建的dbo.provider自定义标量类型,需要在sys.types中查询,测试已经验证有效。

为什么sys.types不在对象目录视图概述里?

你查阅的那份文档是「对象目录视图」的集合页,而sys.types属于类型目录视图分类,和对象目录视图是平行的不同分类,所以不会出现在那个页面里。SQL Server的系统目录视图是按对象类别划分的,不同类别的对象对应不同的视图组。

还有哪些类似的架构范围对象不在sys.objects里?

这类由专属视图管理的架构范围对象还有不少,举几个常见的:

  • 自定义表类型:需查询sys.table_types
  • XML架构集合:需查询sys.xml_schema_collections
  • 分区函数:需查询sys.partition_functions
  • 序列对象:需查询sys.sequences
  • CLR聚合函数:需查询sys.aggregates

附测试代码:

use master;
go

create database testtttt;
go

use testtttt;
go

select * -- 无结果
from sys.objects 
where name = 'provider';

create table dbo.provider (x int);

select * -- 可看到表
from sys.objects 
where name = 'provider';

-- 创建隶属于dbo的类型
create type dbo.provider from int;

select * -- 仅能看到表,看不到类型
from sys.objects 
where name = 'provider';

-- 验证自定义类型需查sys.types
select * from sys.types where name = 'provider';

use master;
go

drop database testtttt;
go

(测试环境:select @@version = Microsoft SQL Server 2014 (SP3-GDR))

内容的提问来源于stack exchange,提问作者user3779002

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:35:04