web-dev-qa-db-ja.com

EXECUTE権限は、オブジェクト「aspnet_CheckSchemaVersion」、データベース「XXX」で拒否されました

MS SQL 2008でasp.net 4 c#およびエンティティフレームワーク4を使用しています。IIS 7.を使用してローカルでWebアプリケーションをセットアップしようとしています。

私のWebサイトでは、Aspメンバーシッププロバイダーを使用しており、db(aspnet_)にさまざまなテーブルとsprocをインストールしています。

スクリプトを実行すると、次のエラーが表示されます。

The EXECUTE permission was denied on the object 'aspnet_CheckSchemaVersion', database 'XXX', schema 'dbo'.     at System.Data.SqlClient.SqlConnection.OnError
  • どうすれば問題を解決できますか?わかりやすい説明をお願いします。これについてあなたのhepをありがとう。
15
GibboK

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

DBに接続するユーザーにdbowner権限を割り当てないでください。アカウントには、必要な権限のみが付与され、それ以上の権限は付与されません。あなたがdboを許可すると、誰かがあなたのウェブサイトの欠陥を悪用した場合、彼らは彼らが望むものへのあなたのデータベース全体への完全な制御されていないアクセスを持ちます-テーブルを削除し、自由にデータを変更します。

23
Simon Halsey

ユーザーをdb_ownerにすべきではないと思います。私は同じ問題を抱えており、BasicAccessの4つのロールをユーザーに付与して、すべてのストアドプロシージャに対する実行権限を付与するだけで十分でした。

GRANT EXECUTE T​​O [theUserName];

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

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

したがって、この特定のユーザーのSQL Server 2008の権限を確認してください。可能であれば、このユーザーをdbownerにします。

お役に立てれば...

編集:パーミッションの問題があることを確認するためだけにdbownerにしたかったのですが、問題がわかったら、そのユーザーにパーミッションを割り当てることができます。したがって、正確な原因と正確な解決策を知っています。

1
Bravo

Db_ownerロールを追加して権限エラーを確認することでテストできることに同意します。ただし、テストのみを行い、役割を削除することが急務であることに注意してください。

[ログインユーザー]を右クリックして[プロパティ]を選択し、[ユーザーマッピング]をクリックします。

提供されたSQLエラーを見ると、これは「実行権限が拒否されました」に基づく問題であると推測できます。テストと確認としてdb_ownerロールを使用した後、さまざまなSQLステートメントを見て、どのストアドプロシージャが呼び出されているかを確認できます。たとえば、以下を検討してください

SQL As String = "EXEC [EAC]。[myStoredProcedure]"など。 。 。 」

アプリケーションが使用するさまざまなストアドプロシージャを見つけたら、それらの特定の実行に対して実行を許可できます。たとえば、次のSQLを考えてみます。

USE DATABASE
GRANT EXECUTE ON OBJECT::EAC.myStoredProcedure
TO myRoleorUser; 

コードで言及されているEAC.myStoredProcedureは、データベースを展開してから、プログラマビリティを展開してから、ストアドプロシージャを展開したときに見つかります。

SQLサーバー上の特定のストアドプロシージャを対象とする場合の詳細については、Microsoft KBをご覧ください。 https://docs.Microsoft.com/en-us/sql/relational-databases/stored-procedures/grant-permissions-on-a-stored-procedure?view=sql-server-2017

0
loganpixel