如何删除具有数据库所有者权限的 SQL Server 用户

Posted

技术标签:

【中文标题】如何删除具有数据库所有者权限的 SQL Server 用户【英文标题】:How to drop a SQL Server user with db owner privilege 【发布时间】:2016-02-16 13:50:40 【问题描述】:

我需要从 SQL Server 数据库中删除具有 dbowner 架构的用户。由于收到此错误消息,我无法按原样删除它

删除用户“网络服务”失败。 (Microsoft.SqlServer.Smo)

数据库主体在数据库中拥有一个架构,并且不能被删除。 (Microsoft SQL Server,错误:15138)

当我尝试取消选中此用户拥有的架构以删除数据库所有者时,它什么也不做。我的问题是如何从'network service' to 'NT AUTHORITY\NETWORK SERVICE'删除该用户或编辑其名称

【问题讨论】:

【参考方案1】:

我有同样的问题,我运行了两个脚本然后我的问题就解决了。

试试这个:

在此查询中,您可以获得AdventureWorks 数据库的用户架构

USE AdventureWorks;
SELECT s.name
FROM sys.schemas s
WHERE s.principal_id = USER_ID('your username');

获取架构名称后,您可以像这样更改架构上的授权:

ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo;

在此查询中db_owner 从第一个查询获得的架构名称。

终于可以无误地删除用户了。

我的来源:SQL SERVER – Fix: Error: 15138

【讨论】:

首先尝试接受的答案后,此选项对我有用(这没有帮助;不知道为什么,它们非常相似)。 这个解决方案对我有用。更改所有者的其他解决方案 - 不起作用,当我想删除它时,用户正在窃取启动错误。【参考方案2】:

我有同样的问题,我无法删除用户

因为它说:

所以我需要去 Security -> Schemas 并寻找 dbo,然后右键单击并选择 Properties:

那就换

dbo

然后我现在可以删除我要删除的用户。

【讨论】:

【参考方案3】:

在我的例子中,我执行了这些命令并解决了问题:

ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo;
ALTER AUTHORIZATION ON SCHEMA::db_datareader TO dbo;
ALTER AUTHORIZATION ON SCHEMA::db_datawriter TO dbo;

【讨论】:

【参考方案4】:

上述解决方案也解决了我的问题:

SELECT s.name
FROM sys.schemas s
WHERE s.principal_id = USER_ID('your username');

ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo;

【讨论】:

【参考方案5】:
ALTER AUTHORIZATION ON SCHEMA::[NT AUTHORITY\SYSTEM] TO dbo

【讨论】:

以上是关于如何删除具有数据库所有者权限的 SQL Server 用户的主要内容,如果未能解决你的问题,请参考以下文章

具有只读访问权限的 Sql 虚拟表:插入、删除、更新?

sql server dbowner 权限 实战

sql serve数据库基础入门

SQL 删除数据库

如何向 sql server 用户授予 sendmail 权限?

具有特定权限的 Postgresql 用户