2011-03-04 75 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