2011-02-24 61 views
0

我創建一個登錄名爲mylogin與密碼=「pass_1」用戶登錄SQL Server 2005中表達

然後我使用此登錄&登錄到SQL Server試圖創建一個數據庫,這給了錯誤權限被拒絕。

然後我執行此:sp_addsrvrolemember「mylogin」,「dbcreator」

於是,我再次用以上登錄&登錄到SQL Server試圖創建一個數據庫,這一次的成功創建了數據庫

這是因爲我爲登錄添加了dbcreator服務器角色。

但是,後來我創造了LOGIN mylogin一個USER myloginuser, 然後執行此查詢: 然後再次我試圖創建一個數據庫,執行爲用戶=「myloginuser」

,但是失敗了。爲什麼這樣?

當用戶MYLOGINUSER所關聯的登錄MYLOGIN有權創建數據庫時,爲什麼用戶沒有權限?那麼最新的解決方案呢?我是否必須單獨授予用戶權限,而不管授予登錄的權限?

此外,爲登錄創建的用戶必須在數據庫內部創建嗎?有必要嗎?

回答

1

的LOGIN [mylogin]被mylogin默認的用戶(其被創建執行

sp_addsrvrolemember 'mylogin', 'dbcreator'

因此,該mylogin用戶已經分貝創建權限但是你爲同一個登錄創建了一個MYLOGINUSER,所以現有的用戶mylogin被設置爲孤立的用戶,因此mylogin Login刪除了db的創建者權限。

+0

非常感謝先生,但那我該如何給myloginuser創建表權限呢?當我使用sp_addsrvrolemember給它時,它說--login不存在。所以我必須使用GRANT? – sqlchild 2011-02-24 11:58:02

+0

@sqlchild,運行下面的腳本使用YOUR_DB exec sp_addrolemember'db_owner',myloginuser – Nanda 2011-02-24 12:15:20

+0

先生,我想知道,在sp_addsrvrolemember,用戶名不能給?我們必須給它一個登錄名?因爲當我分別創建一個用戶,然後試圖授予dbcreator服務器角色給他,然後它給了錯誤。意味着如果我們希望用戶使用與登錄名稱相同的名稱創建,那麼我們可以使用sp_addsrvrolemember,因爲它創建了用戶本身,但是當我們單獨創建一個用戶然後想要授予他時,我們就不能用它。 – sqlchild 2011-02-24 14:00:51

1

是否將SQL Server Authenticationmode設置爲Mixed而不是Windows? Ypu'll必須將其設置爲混合。

用戶必須在SQL Server級別創建並賦予(映射到)數據庫權限。

+0

親愛的先生,如果我選擇了Windows模式,我無法賦予新的登錄權限? – sqlchild 2011-02-24 12:00:02