現在オフラインです。再接続するためにインターネットの接続を待っています

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

現象
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 - 最終更新日: 09/14/2005 08:53:00 - リビジョン: 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
フィードバック