2011-07-11 33 views
0

創建用戶我有SQL Server用戶在數據庫中,出於某種原因,用戶無法連接在SQL Server 2008

時查看錶下面是我使用的創建用戶的命令。我不想讓用戶dbuser架構的所有者。

create user dbuser for login dbuser' 

--on the specific database, I am using these commands. 
exec sp_addrolemember @rolename = 'db_datareader', @membername = 'dbuser' 
exec sp_addrolemember @rolename = 'db_datawriter', @membername = 'dbuser' 

grant select on schema :: [schema1] TO [dbuser] 
grant insert on schema :: [schema1] TO [dbuser] 
grant update on schema :: [schema1] TO [dbuser] 
grant execute on schema :: [schema1] TO [dbuser] 

grant select on schema :: [schema2] TO [dbuser] 
grant insert on schema :: [schema2] TO [dbuser] 
grant update on schema :: [schema2] TO [dbuser] 
grant execute on schema :: [schema2] TO [dbuser] 

即使我授予的模式。與dbuser登錄時,用戶的所有插入和更新的訪問是無法從任何模式的查看任何表中。當用戶嘗試連接到數據庫時,他只會看到系統表選項卡。用戶需要看到schema1,schema2, schema3

感謝

+0

如果您發佈的代碼,XML或數據樣本,** **請在高亮文本編輯器的線和編輯器工具欄上的漂亮格式點擊「代碼示例」按鈕('{}')並語法突出顯示它! –

+1

感謝您爲我編輯它。我會在這裏做。 – iims

回答

1

基於在Microsoft Connect

找到一個解決辦法做到以下幾點:

要解決此問題,你必須以管理員身份登錄,右擊 數據庫節點,選擇屬性,權限,並授予用戶「查看 定義」權限。

1

您確保用戶連接到你的數據庫,而不是掌握下的所有表?而且你是在正確的數據庫中創建用戶?

+0

是的我是我看到用戶創建,在我希望創建此用戶的數據庫。 – iims

+0

@pkat:你確定用戶在某處不是DENYd嗎?我只是測試了你的代碼,它對dbo schema有效。我改變的唯一的事情就是創建登錄用戶(刪除它)後的單引號和架構名稱。此外,您可能不需要明確添加任何權限,因爲addrolemember應該爲您處理這些問題。 – jmoreno

1

擴展上述答案。

GRANT VIEW DEFINITION ON SCHEMA::[schema1] TO [dbuser]; 
GRANT VIEW DEFINITION ON SCHEMA::[schema2] TO [dbuser]; 
+0

有趣的是,這沒有奏效,我把它添加到我的腳本並跑了,它仍然是同樣的問題。但是當我跟着時,NCGrimbo,它的工作。 – iims