SQL Server 2008 - 删除架构所有权

Posted

技术标签:

【中文标题】SQL Server 2008 - 删除架构所有权【英文标题】:SQL Server 2008 - Removing schema ownership 【发布时间】:2011-07-09 02:31:56 【问题描述】:

我刚刚创建了一个新的 Web 应用程序,它接受来自用户的一些基于表单的输入并将其插入到数据库中。为此,我在数据库中创建了一个新用户,并最初为该用户分配了两个角色和架构 ...

db_datareader
db_datawriter

经过深思熟虑后,我意识到用户不需要成为db_datareader 角色的一部分,因为用户只是将数据插入数据库而从不读取任何数据。所以我回去删除了db_datareader的角色,发现架构选项是灰色的。我无法从 db_datareader 的架构所有权中删除用户。

如何从特定架构的所有权中删除用户?我是否应该首先分配架构所有权?

我以 SQL Server 和 Windows 7 操作系统的管理员身份登录。

【问题讨论】:

【参考方案1】:

我今天遇到了同样的问题,并找到了一种将用户删除为架构所有者的方法。打开数据库中安全性下方的架构节点,并更改您错误使用默认所有者的用户的所有者。例如,如果某个奇怪的用户名被列为 db_datareader 的架构所有者,则将其更改为 db_reader 等等。

【讨论】:

我唯一要添加的是刷新 Sql Mgmnt 中的数据库节点。在进行 Doreen 的更改或错误分配给架构的 sql 用户后,Studio(右键单击|刷新)仍会显示在 sql mgmnt studio 仍处于打开状态时检查的架构成员资格。没有必要,但可以避免错误地认为修复无效。【参考方案2】:

不,您不应该将架构的所有权分配给用户。您应该刚刚使用户成为模式的成员。将所有权恢复为 dbo 并检查用户帐户是否仍不是架构的成员。

【讨论】:

谢谢。我按照您的建议做了,用户不再是架构的所有者。我发现架构所有权的 who 概念令人困惑。对涵盖该领域的资源或教程有什么建议吗? 嗯,我参加了 SQL Server 2008 培训班。在此之前,我对架构的全部内容感到困惑。我真正发现的是,如果您需要对象的精细权限(即多个用户可以访问(或不访问)模式中的对象),那么模式实际上只不过是像命名空间这样的逻辑容器 - 仅对开发商。否则,如果帐户可以访问架构中的所有对象,则向架构中添加更多对象会隐式授予架构成员配置的访问权限。 就我个人而言,对于我使用 Active Directory 安全性的内部企业应用程序,我发现架构仅对我们开发人员作为命名空间有用。我创建数据库(或从现在开始的应用程序)角色并将角色权限分配给对象。

以上是关于SQL Server 2008 - 删除架构所有权的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2008 删除数据库中所有表的数据

如何在 SQL Server 2008 R2 中的所有行中删除只有一个值的多列

SQL SERVER 2008 R2 数据库附加到 SQL server 2005,怎么整

SQL Server 2008 清空删除日志文件

SQL Server 2008 R2 安装失败(图)

如何将所有数据库(快速)自 sql server 2008 express 传递到 sql server 2008 R2(无 express)