2010-05-17 111 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