[PRB] ASP でエラー "更新可能なクエリであることが必要です。" が返される

文書翻訳 文書翻訳
文書番号: 175168 - 対象製品
すべて展開する | すべて折りたたむ

現象

Active Server Pages (ASP) で ActiveX Data Objects (ADO) を使用すると、次の一般的なエラーが表示されることがあります。
Microsoft OLE DB Provider for ODBC Drivers エラー '80004005'
[Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。

原因

この資料では、上記のエラーの主な原因 4 つとそれぞれの回避方法について説明します。この資料では Microsoft Access データベースについて述べていますが、この資料に記載されている情報は他の種類のデータベースにも該当します。

解決方法

このエラーが発生するのは、通常、UPDATE など、データベースの情報に変更を加える操作をスクリプトで実行するときです。以下のいずれかの原因で ADO によるデータベースへの書き込みができない場合に発生します。

  1. 最も頻度の高い原因は、デフォルトで "Everyone" グループに含まれているインターネット ゲスト アカウント (IUSR_MACHINE) に、データベース ファイル (.mdb) に対する書き込みのアクセス許可がないことです。この問題を解決するには、エクスプローラで、対象のファイルのプロパティの [セキュリティ] タブを修正して、インターネット ゲスト アカウントに適切なアクセス許可を付与します。

    : ADO と共に Microsoft Access データベースを使用する場合、インターネット ゲスト アカウントに、.mdb ファイルが格納されているディレクトリに対する書き込みのアクセス許可を与える必要もあります。これは、データベースのロックを処理するために Jet により .ldb ファイルが作成されるためです。また、Jet では Temp フォルダに一時ファイルが作成されることもあるため、このフォルダに対する読み取りおよび書き込みのアクセス許可を与える必要もあります。
  2. このエラーの原因として 2 番目に挙げられるのは、データベースが書き込みに適した MODE で開かれなかったことです。Connection オブジェクトに対して Open を実行する場合は、次のように Mode プロパティを使用して接続に対するアクセス許可を指定します。
    
          SQL = "UPDATE Products Set UnitPrice = 2;"
          Set Conn = Server.CreateObject("ADODB.Connection")
          Conn.Mode = 3      '3 = adModeReadWrite
          Conn.Open "myDSN"
          Conn.Execute(SQL)
          Conn.Close
    
    						
    : MODE はデフォルトでは 0(adModeUnknown) に設定され、通常では更新が許可されます。
  3. このエラーのもう 1 つの原因として挙げられるのは、ODBC マネージャのこのデータ ソース名 (DSN) の [オプション] ページで [読み取り専用] チェック ボックスがオンになっている場合です。
  4. この最後の原因と回避方法は、どのような SQL データ ソースでも関係します。データベースの参照整合性に違反する SQL ステートメントが原因でエラーが発生することがあります。失敗する最も一般的なクエリのいくつかを以下に示します。
    • 対応が最も簡単なのは、UniqueValue プロパティが Yes に設定される、クロス集計、SQL パススルー クエリ、結合クエリ、または更新クエリ (つまりテーブル作成クエリ) など、ユーザーが変更できないものです。

    • 非常に一般的なもう 1 つの原因は、一意のインデックスを持たないリンクした ODBC テーブルが結合に含まれている場合です。この場合、SQL には、クエリによって値が変わるフィールドを持つテーブル内で、レコードが一意であることを保証する方法はありません。

    • 確実な回避策がある原因もあります。"一対多" のクエリの "一" の側にある結合フィールドを更新する場合、連鎖更新を有効にしないと失敗します。連鎖更新を有効にすることにより、参照整合性を JET エンジンに委任できます。

状況

この動作は仕様です。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 175168 (最終更新日 2005-03-02) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 175168 - 最終更新日: 2005年9月14日 - リビジョン: 4.1
この資料は以下の製品について記述したものです。
  • Microsoft Active Server Pages 4.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
キーワード:?
kberrmsg kbdatabase kbprb KB175168
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com