【问题标题】:How can I delete a user from sql server 2012 who owns a schema如何从拥有架构的 sql server 2012 中删除用户
【发布时间】:2016-01-06 14:59:42
【问题描述】:

我在 Sql Server 2012 中创建了一个新用户,并且“偶然”将他们标记为多个架构的所有者。我打算将它们标记为架构的成员,但我在错误的选项卡上!

因为他们现在是架构的所有者,所以我无法取消选择所有权,也无法删除用户。我怎样才能撤消我的错误?

【问题讨论】:

  • 从记忆中,我认为您必须先将架构的所有权分配给另一个用户。然后您应该可以取消选择所有权。
  • 我知道你问的是 2012 年的问题,但我发现了你的问题的 2008 年版本。也许试试这个,看看它是否适合你?我不确定 2012 年 - stackoverflow.com/questions/5198884/…
  • ALTER AUTHORIZATION ON SCHEMA::db_datareader TO [some_other_user]; (另外,这就是我们编写可以验证、存储在源代码管理中等的 DDL 脚本的原因。验证您在 UI 中指向和单击操作的唯一方法是记录某种截屏视频。)

标签: sql-server sql-server-2012


【解决方案1】:

在删除用户之前,您必须将架构的所有权转让给其他用户,可能是dbo

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

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

USE tempdb;
CREATE USER [testuser] WITHOUT LOGIN;
GO
CREATE SCHEMA [max] AUTHORIZATION testuser;
GO

尝试删除用户,会失败:

DROP USER [testuser];
GO

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

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

将架构的所有权转让给其他用户,在本例中为特殊用户 dbo,它拥有数据库:

ALTER AUTHORIZATION ON SCHEMA::[max] TO dbo;
GO

现在,删除测试用户,它可以工作:

DROP USER [testuser];

【讨论】:

  • 将所有权授予另一个用户后,它会自动从我创建的用户那里删除所有权。我什至不需要删除它们!谢谢!
  • 啊,所以您的问题只是“如何更改架构所有权”。只能有一个所有者。
猜你喜欢
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多