我正在使用以下语句在 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;
知道为什么吗?
这是我输出的截图