我正在使用以下语句在 SQL Server 2008R2/2012 上创建用户定义的表类型:
这个操作起到了预期的作用。我还有一个存储过程,可以删除给定架构下的所有相关对象。这就是我的用户定义表类型无法正常工作的地方。我希望这些类型是在创建时与一个关联的模式一起创建的。如果尝试删除该架构,则会提示该架构与我的用户定义表类型相关联。因此,它将不会被删除。但是,如果查询我的数据库中所有的TYPE_TABLE对象,它会告诉我,我的表类型不属于我的模式。它们属于“sys”模式。
有什么想法吗?
这是我输出的截图:
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;
有什么想法吗?
这是我输出的截图:
![enter image description here](https://istack.dev59.com/mDqpI.webp)