2011-10-10 35 views
13

私はasp.net 4 c#とエンティティフレームワーク4をMS SQL 2008で使用します。IIS 7を使用してローカルにWebアプリケーションを設定しようとしています。オブジェクト 'aspnet_CheckSchemaVersion'、データベース 'XXX'のEXECUTE権限が拒否されました

私のウェブサイトでは、私のユーザーのAspメンバーシッププロバイダは、別のテーブルとsprocsをdb(aspnet_)にインストールしています。

The EXECUTE permission was denied on the object 'aspnet_CheckSchemaVersion', database 'XXX', schema 'dbo'.  at System.Data.SqlClient.SqlConnection.OnError 
  • はどのように問題を解決することができます:

    我々はこのエラーが発生したスクリプトを実行していますか? 明確な指示を教えてください。これについてあなたのhepに感謝します。

+4

あなたはいいですか?私はあなたがノブを意味すると思うが、それはコメディのタイプミスです。 –

+0

ここで答える:http://stackoverflow.com/questions/16134262/execute-permission-denied-aspnet-roles-roleexists?answertab=active#tab-top –

答えて

23

メンバシップテーブルに関連するいくつかのdbロールが必要です(aspnet_profile_fullaccessなど)。使用しているアカウントが適切な役割のメンバーであることを確認してください。

DBに接続するユーザーにdbowner特権を割り当てないでください。アカウントに必要な権利のみがある必要があります。& dbo &に誰かがあなたのウェブサイトの欠陥を悪用することを許可した場合、dbを自分の望むものに完全に制御することができます - テーブルを削除し、自由にデータを変更します。

+0

ありがとうSimone私はあなたの答えを慎重に読んで、私はあなたに同意します。 – GibboK

+2

私が接続しているユーザーには、すべてのaspnet_ *ロールが割り当てられていますが、このエラーメッセージが表示されています。 dbownerの役割を追加するだけです。あなたが知っていることは、これを引き起こすでしょうか? – ajbeaven

+1

ASP.NET SQL Server登録ツールを実行する必要があります。 http://msdn.microsoft.com/en-us/library/ms229862(v=vs.100).aspx – arni

1

問題は、アプリケーションでログインしているユーザーIDにデータベースに十分な特権がないことです。データベースの所有者であるか、すべてのaspnet_ストアドプロシージャに対するアクセス権が与えられている必要があります。

この特定のユーザーについては、SQL Server 2008のアクセス許可を確認してください。可能であれば、このユーザーをdbownerとして作成します。

希望この役立ちます...

編集:私はあなたが問題について確信していたら、あなたはそれに権限を割り当てることができ、単にいくつかの権限の問題があることを確認するためにあなたがのdbownerとしてそれを作りたかったですユーザー。正確な原因と正確な解を知ることができます。

+1

ユーザーをdbownerにするための提案に投票しました。私はあなたの編集でこれを認定したことを知っていますが、私はこの声明が危険である可能性があることを知るのに十分なことを知っています – awrigley

0

私はあなたがdb_ownerをユーザにするべきではないと思います。私は同じ問題を抱えていました.BaseAccessを使って4つの役割を自分のユーザーに与えて、すべてのストアドプロシージャに対してEXECUTE権限を与えることで十分でした。

GRANT EXECUTE T​​O [theUserName];

私はこれが理想的ではないことを知っています。必要なストアドプロシージャに対してのみEXECUTE権限を付与する必要がありますが、ユーザーが実行できる必要があるSPが見つかるまで迅速な解決策が必要な場合は、これが有効です。