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 R2 中的所有行中删除只有一个值的多列
SQL SERVER 2008 R2 数据库附加到 SQL server 2005,怎么整
如何将所有数据库(快速)自 sql server 2008 express 传递到 sql server 2008 R2(无 express)