2011-03-04 74 views
4

我刚刚创建了一个新的Web应用程序,它接受来自用户的某些基于表单的输入并将其插入到数据库中。与此一起去,我创建的数据库的新用户以及最初分配用户两个角色和模式...SQL Server 2008 - 删除模式所有权

db_datareader 
db_datawriter 

在我想的东西后实现了用户并不需要成为db_datareader的一部分因为用户只将数据插入到数据库中,并且从不读取任何数据。所以我回去并删除了角色db_datareader,并注意到架构选项变灰。我无法从db_datareader的架构所有权中移除用户。

如何从特定架构的所有权中移除用户?我应该首先分配模式所有权吗?

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

回答

5

不,您不应该将架构的所有权分配给用户。您应该让用户成为模式的成员。将所有权归还给dbo,并检查用户帐户是否仍然是架构的成员。

+0

谢谢。我做了你的建议,用户不再是模式的所有者。我发现谁拥有架构所有权的概念令人困惑。任何关于资源或教程的建议涵盖了这个领域? – webworm 2011-03-04 20:40:24

+1

好吧,我参加了SQL Server 2008的一个培训课。在那之前,我对什么模式都是困惑的。我真正发现的是,如果你需要细化对象的权限(即多个用户可以访问(或不访问)模式中的对象),那么这些模式实际上只不过是像命名空间这样的逻辑容器 - 只对开发人员。否则,如果某个帐户可以访问模式中的所有对象,则向该模式添加更多对象会隐式授予架构成员所配置的访问权限。 – HardCode 2011-03-04 21:30:53

+0

就我个人而言,对于使用Active Directory安全性的内部企业应用程序,我发现模式仅作为我们开发人员的命名空间。我创建数据库(或从现在起的应用程序)角色并为角色分配角色权限。 – HardCode 2011-03-04 21:32:25

11

我今天有同样的问题,并找到一种方法来删除用户作为架构的所有者。打开数据库中Security的下方的Schema节点,并更改您错误地与默认所有者一起使用的用户的所有者。例如,如果某些古怪的用户名称被列为db_datareader的模式所有者,请将其更改为db_reader,等等。

+1

我要添加的唯一东西是刷新Sql Mgmnt中的数据库节点。在Doreen进行更改后,Studio(右键单击|刷新)或sql用户错误地分配给该模式仍将显示在sql mgmnt studio仍处于打开状态时检查的模式成员资格。没有必要,但可以避免错误的认知修复无效。 – JimSTAT 2014-01-15 02:46:44