如何删除具有数据库所有者权限的 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 用户的主要内容,如果未能解决你的问题,请参考以下文章