如何从拥有架构的SQL Server 2012中删除用户

Bri*_*egg 3 sql-server sql-server-2012

我在Sql Server 2012中创建了一个新用户,“偶然”将它们标记为多个架构的所有者。我本打算将它们标记为架构的成员,但我的标签不正确!

因为他们现在是架构的所有者,所以我不能取消选择所有权,也不能删除用户。我该如何消除我的错误?

架构所有权

Max*_*non 6

dbo在删除用户之前,您必须将模式的所有权转移给其他用户(可能是):

为了对此进行测试,我做了以下工作:

创建一个用户以拥有该架构和一个测试架构:

USE tempdb;
CREATE USER [testuser] WITHOUT LOGIN;
GO
CREATE SCHEMA [max] AUTHORIZATION testuser;
GO
Run Code Online (Sandbox Code Playgroud)

尝试删除用户,这将失败:

DROP USER [testuser];
GO
Run Code Online (Sandbox Code Playgroud)

消息15138,第16级,状态1,第1行

数据库主体在数据库中拥有一个架构,不能删除。

将模式的所有权转移给dbo拥有数据库的其他用户(在本例中为特殊用户):

ALTER AUTHORIZATION ON SCHEMA::[max] TO dbo;
GO
Run Code Online (Sandbox Code Playgroud)

现在,删除测试用户,该用户可以使用:

DROP USER [testuser];
Run Code Online (Sandbox Code Playgroud)

  • 将所有权授予另一个用户后,它会自动从我创建的用户中删除所有权。我什至不需要删除它们!谢谢! (2认同)