2010-11-08 16 views
0

在我的網站的Application_Start中,我執行存儲過程以從一個SQL Server 2008數據庫讀取一些數據。Ado.Net具有隻讀SQL Server用戶的ExecuteReader

這是對這個數據庫的唯一調用。

我會創建一個具有隻讀權限的特定SQL Server用戶來執行此sp。

我創建了一個新的SQL Server用戶與db_datareader角色,但是當我執行的是SP我有一個錯誤在這行:

SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 

的錯誤是:EXECUTE permission denied on object ...

哪有我解決這個問題?

感謝

+0

我知道你已經創建了一個新用戶,給了他'db_datareader'角色,並且授予他執行SP的權限。您是否考慮授予他連接到您的數據庫的權利?聽起來很奇怪,用戶需要連接權限才能進行連接,並對數據庫執行任何操作。 – 2010-11-08 17:21:46

+0

我沒有那樣做,但它似乎工作,因爲它打開連接,然後執行ExecuteReader。我正在嘗試授予用戶,但它不起作用。請參閱評論的答案。謝謝。 – opaera 2010-11-08 17:52:05

回答

2

你之前授予創建訪問存儲過程的用戶?

GRANT EXECUTE ON sp_your_proc TO your_user; 
+0

感謝您的回答。我現在嘗試,但我收到一個錯誤。這是不可能的,拒絕.. sa,dbo,....的授權對不起,但我收到意大利語的錯誤信息。我創建的用戶在dbo模式下,只有db_datareader角色。 – opaera 2010-11-08 17:01:08

+0

用戶是否有權訪問dbo模式?你是如何創建用戶的?如果您發佈了錯誤消息,也許我可以從中讀取一些信息。此外,如果您有權訪問SQL Server Management Studio,則可以檢查Security/Logins下的db登錄的屬性。 – Erik 2010-11-09 09:27:21

相關問題