2011-10-10 75 views
13

我使用MS SQL 2008使用asp.net 4 c#和實體框架4.我嘗試使用IIS 7在本地設置我的web應用程序。在對象'aspnet_CheckSchemaVersion',數據庫'XXX'上拒絕EXECUTE權限

對於我的網站我用戶的Asp會員提供商,我已經安裝了不同的表和sprocs在我的分貝(aspnet_)。

運行腳本,我們收到此錯誤:

The EXECUTE permission was denied on the object 'aspnet_CheckSchemaVersion', database 'XXX', schema 'dbo'.  at System.Data.SqlClient.SqlConnection.OnError 
  • 我該如何解決這個問題呢? 請給我提供明確的說明。感謝你的幫助。
+4

你是諾布?我認爲你的意思是noob,但這是一個喜劇錯字。 –

+0

在這裏回答:http://stackoverflow.com/questions/16134262/execute-permission-denied-aspnet-roles-roleexists?answertab=active#tab-top –

回答

23

應該有一些與成員表相關的數據庫角色,例如aspnet_profile_fullaccess。確保您使用的帳戶是適當角色的成員。

您不應該將您連接到數據庫的用戶指定爲dbowner權限。該帳戶只應具有&所需的權利。如果您授予dbo &有人利用您的網站中的缺陷,他們將完全不受控制地訪問您的整個數據庫到他們想要的 - 刪除表格,隨意更改數據。

+0

謝謝西蒙娜我仔細閱讀了你的答案,我同意你的意見。 – GibboK

+2

我正在連接的用戶已將所有aspnet_ *角色分配給他們,但我仍然收到此錯誤消息。似乎工作的唯一方法是如果我添加dbowner角色。你知道的任何事情都會造成這種情況? – ajbeaven

+1

您可能需要運行ASP.NET SQL Server註冊工具: http://msdn.microsoft.com/en-us/library/ms229862(v=vs.100).aspx – arni

1

問題是應用程序正在登錄的用戶標識在數據庫中沒有足夠的權限。它需要成爲數據庫所有者,或者被授予所有aspnet_存儲過程的權限。

因此,請檢查SQL Server 2008中這個特定用戶的權限。並且如果可能的話,使這個用戶成爲一個dbowner。

希望這有助於...

編輯:我想讓你做它只是的dbowner驗證,有一些權限問題,一旦你確定這個問題,你可以將權限分配給該用戶。因此知道確切的原因和確切的解決方案。

+1

投票建議使用戶一個dbowner。我知道你在編輯中符合這一條件,但我知道這足以知道這個聲明可能是危險的。 – awrigley

0

我不認爲你應該讓用戶成爲db_owner。我遇到了同樣的問題,只需將BasicAccess的4個角色授予我的用戶即可,並授予他對所有存儲過程的EXECUTE權限:

GRANT EXECUTE T​​O [theUserName];

我知道這並不理想。一個應該只對所需的存儲過程授予EXECUTE權限,但是如果您需要一個快速解決方案,直到找到您的用戶需要執行的哪個SP,這應該可以工作。

相關問題