2010-05-17 114 views
1

我创建了一个数据库和一些dbo.tables。现在我想创建一个可以读写这些表的用户,但不能修改或删除。不过,我希望这个用户能够创建自己的表,并让他做他想做的事情。SQL Server 2005用户权限

这可能吗?有人可以解释如何做到这一点吗?

回答

3

您将为dbo模式分配用户db_datareader & db_datawriter角色。

但是,要允许用户只创建和修改新表;您将不得不创建不同的架构并为该架构分配例如db_owner权限。

但您应该意识到,这样做可能会产生问题,因为您可以在不同模式下使用两个具有相同名称的表。所以你应该确保你的查询总是声明对象的所有者。

例如

dbo.MyTable 

CustomSchema.MyTable 

UPDATE:

好吧,我想这些都是你需要采取的步骤:

  1. 创建一个新的数据库角色e.g db_ReportingRole和相关用户添加到该角色。
  2. 创建一个新的模式,例如Reporting并使db_ReportingRole成为此模式的所有者。
  3. 分配相关CREATEDROP等权限db_ReportingRole
  4. 确保以前添加相同的用户是为dbo架构db_datareaderdb_datawriter角色。

这应该然后让你有一个可以读写dbo模式,但也应该能够修改表等,但用户,因为他们在db_ReportingRole他们应该有充分的机会来修改,创建,删除etc的表格在Reporting架构中。 (提供了已分配了正确的权限db_ReportingRole

我希望这对你的作品。

+0

感谢您的答复。 如何我让用户使用新的模式?难道我只是更改默认模式到新的模式还是我做新的模式的用户所有者? – karl 2010-05-17 12:17:46

+0

当我创建新的模式并尝试添加权限。我找不到数据库角色db_owner – karl 2010-05-17 12:29:38

+0

嗨卡尔,这可能会帮助你试图分配权限http://msdn.microsoft.com/en-us/library/ms187940.aspx – codingbadger 2010-05-17 12:35:06