2011-02-26 115 views
1

我使用Windows身份驗證(管理員)連接到SQL Server。使用SQL Server 2005 Express中的登錄,用戶和權限

然後,我創建一個登錄我的SQL Server 2005 Express作爲:

CREATE LOGIN bob WITH PASSWORD = 'bobpass'. 

現在,我關閉了SQL Server的&然後再次打開它&這個時候,我的登錄「鮑勃」連接它。現在

,我執行該:SELECT CURRENT_USER.

它給輸出:客人

爲什麼會這樣?

這是因爲我沒有在bob登錄內部創建任何用戶?

回答

3

CURRENT_USER將返回一個數據庫主體(一個用戶)。 bob是服務器主體(登錄)。如果您沒有授予對任何數據庫的訪問權限,並且您沒有將bob添加到任何內置服務器安全組,那麼除了master和tempdb之外,他將無法訪問任何數據庫。在這兩個數據庫中,他將被識別爲guest。這是默認設置,如果您的部署從全新安裝中更改了某些內容(例如,您可能會發現bob可訪問更多數據庫,因爲這些數據庫已啓用guest),您可能會注意到與此描述有所不同。

所以基本上你猜對了:bobguest,因爲他沒有一個明確的數據庫主體(一個用戶),也不是sysadmin他成員(在這種情況下,他會在每個數據庫dbo)。

+0

謝謝很多先生,還有,先生,如果我創建bob登錄的bobuser,然後我可以連接到sql服務器使用用戶名作爲bobuser – sqlchild 2011-02-26 06:19:07

+0

我也有一個問題:http://stackoverflow.com/questions/ 5117029/logins-users-permissions-in-sql-express-2005-with-diagram-flowchart – sqlchild 2011-02-26 06:19:58

+0

sir,如果我給系統管理員角色bob,那麼他將是所有數據庫的dbo,意味着用戶將在登錄時自動創建鮑勃,命名爲dbo? – sqlchild 2011-02-26 06:29:07