2011-03-01 84 views
0

我創建了一個登錄來連接到SQL SERVER。在sql express 2005中授予表級權限

create login bobLogin with password = 'bobpass' , default_database = bobDB 

但是當我連接sql server使用它,它不連接?因爲它需要一個用戶。

,所以我創建的用戶:

create user bobDB_USER for login bobLogin 

然後我連接到SQL中使用bobLogin &服務器試圖創建表:

create table bobDbTable(eid int) 

其給出許可被拒絕的錯誤;

,所以我授予的權限:

GRANT CREATE TABLE TO bobDB_USER 

然後我用bobLogin再次連接,&試圖創建一個表,但它給了錯誤:

指定的架構名稱「DBO」不存在或您無權使用它。

爲什麼這麼說?它在dbo schema中創建表,這是爲什麼?那麼我如何授予他這種權限?

我不想創建一個新的模式。有必要嗎?

回答

1

您需要GRANT ALTER ON SCHEMA::dbo TO bobDB_USER才能在dbo架構中創建對象。

我也會使用角色。

create role bobDB_ROLE 
EXEC sp_addrolemember 'bobDB_ROLE', 'bobDB_USER' 
GRANT ALTER ON SCHEMA::dbo TO bobDB_ROLE 

但是,您可以添加到bobDB_USER如果db_owner它要求這些權利

EXEC sp_addrolemember 'db_owner', 'bobDB_USER' 

注:最終用戶權限是管理類型的權限完全不同。如果'bobDB_USER'是最終用戶,那麼他們不應該創建對象

+0

@gbn,先生,我有一個問題:http://stackoverflow.com/questions/5151363/creating-multiple-users-for-ac -net-winform-application-using-sql-server-express – sqlchild 2011-03-01 06:55:12

+0

@gbn,先生,當我這樣做:使用bobDB,創建登錄bobLogin與密碼='bobpass',default_database = bobDB,使用bobDB,創建用戶bobDBUser登錄bobLogin,然後是bobDBUser默認情況下不是bobDB的所有者,因爲我在使用bobDB語句後創建了他,那麼他是誰? – sqlchild 2011-03-01 06:58:14

+0

只是最終用戶。服務器級所有者記錄在sys.databases中。數據庫級別的所有者必須被授予 – gbn 2011-03-01 07:02:22