【发布时间】:2013-11-07 05:28:42
【问题描述】:
我正在使用以下语句在 SQL Server 2008R2/2012 上创建用户定义的表类型:
CREATE TYPE [MySchemaName].[MyUserTableType]
As Table ( [Id] varchar(20) NOT NULL );
这按预期工作。
我还有一个存储过程,它将所有关联对象删除到给定架构。 这是我的用户定义表类型无法正常工作的地方。我期待 这些类型是使用关联的架构创建的。
如果我尝试删除架构,它会抱怨架构与我的用户定义的表类型相关联。因此它不会被删除。
但是,如果我查询我的数据库中所有属于 TYPE_TABLE 的对象,它会告诉我我的表类型不属于我的模式。它们属于架构“sys”
SELECT name, schema_id, type_desc
FROM [TESTDB].SYS.OBJECTS
WHERE type_desc = 'TYPE_TABLE';
SELECT * FROM sys.schemas;
知道为什么吗?
这是我输出的截图
【问题讨论】:
-
据我了解,用户定义类型始终分配给“SYS”模式,因此这是预期的行为。用户定义的模式可以分配给函数、过程、表和触发器
标签: sql sql-server schema user-defined-types