删除SQL Server数据库中的角色?

时间:2010-01-07 15:32:58

标签: sql-server database schema role sql-drop

我正在尝试删除我的SQL Server数据库中的一个角色。我从角色中删除了所有成员,当我尝试删除角色时,我收到了此错误消息:

Msg 15138, Level 16, State 1, Line 13
The database principal owns a schema in the database, and cannot be dropped.

有谁知道为什么?我检查了自己的架构,它只有自己的名字检查标志。

2 个答案:

答案 0 :(得分:2)

您不能删除拥有架构的数据库主体。您必须将架构所有权转移到其他数据库主体,或者在删除数据库主体之前删除架构。

答案 1 :(得分:0)

15138错误是由于您尝试删除的用户拥有架构。

如果您运行以下查询,您将获得该用户拥有的架构。

USE DatabaseName; 
SELECT s.name
FROM sys.schemas s
WHERE s.principal_id = USER_ID('UserName');

让我们说它返回'db_denydatareader'架构。然后你可以分配 使用以下查询将该架构设置为默认用户'dbo'。

ALTER AUTHORIZATION ON SCHEMA::db_denydatareader TO dbo;