2012-06-13 9 views
0

我的web應用程序需要讀取,寫入(INSERT,UPDATE,DELETE),並有五個架構一個SQL 2008數據庫上執行存儲過程。如果某個用戶是爲了讀,寫和執行的SP架構所有者?

我創建了一個用戶,通過SQL進行身份驗證,並通過安全 - >登錄 - >(用戶名)屬性 - >用戶映射授予用戶db_datareader,db_datawriter和db_procedureexec。然後我配置了應用程序連接到使用的用戶名和正確的密碼,數據庫,但在試圖執行一個存儲過程,得到這個錯誤:

The EXECUTE permission was denied on the object '(stored procedure name)', database '(new database)', schema '(schema 1)'. 

在數據庫中的安全部分找到這個用戶,我使它成爲DB中五個模式的所有者。

我有沒有給予太多的特權?應用程序級別的用戶應該是架構所有者以便讀取,寫入和執行程序?

+0

你有沒有定義正確的數據庫的權限? – Oded

回答

2

沒有,應用用戶不應該需要一個模式所有者才能讀取,寫入和exec程序。

你可以說這樣的話:

GRANT EXEC ON SCHEMA::whatever TO [user]; 

這將使他們在[任何]模式執行過程。爲了不要求傳遞的特權(例如說你的程序執行動態SQL),你可以考慮將它們設置爲EXECUTE AS OWNER

0

你不想授予數據庫的應用程序用戶的所有權。這基本上給了他們購物車的空白。你應該做的是給用戶授予db_datareaderdb_datawriter角色,並授予所有適用的存儲過程和函數的執行權。

相關問題