• ベストアンサー

UPDATEできなくて困っています

SQLServerのデータペースの内容をASPから更新するプログラムを作成していますが、UPDATEできずに困っています。 エラーの内容は、 Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。 となります。 元々はAccess2000のデータベースで、その時は正常に動作していたのですがデータベースをSQLServerに変更したらUPDATEできなくなってしまいました。 SELECTによるデータの呼び出しは可能なので、システムDSNの設定は間違っていないと思うのですが... 接続は、 Set OBJ=Server.CreateObject("ADODB.Connection") OBJ.Open sql , "DSN=SQLDB" としていますが、OBJ.OPEN の行でエラー発生します。 【環境】 windows2000server + IIS SQLServer2000 アクセスとは接続方法が違うのでしょうか。 確認すべきポイントなどありましたらご教授ください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • t2hayashi
  • ベストアンサー率46% (102/219)
回答No.1

二点あります。 ・UPDATEしたいテーブルに主キーはあるか。 SQLサーバーはテーブルに1つ以上のユニークなフィールドがないと更新及び追加ができません。DBの基本概念ですね。 ・セキュリティの問題 更新したいテーブルに接続するユーザーにUPDATE権限はあるか。 あたりですね、怪しいのは。 ちなみにACCESSからSQLサーバーにリンクした場合は更新できるのですか?

ron6
質問者

お礼

回答ありがとうございます。 原因はまだわかっていないのですが、 基本に帰ってSQLのサンプルデータベースに接続できるかNorthwindで確認してみましたところ、こちらでもだめでした。 これから環境側の問題がないか確認していきます。 アクセス権の問題の場合は、エラーメッセージとして”権限が無い”となるかと思うのですが、こちらも視野に入れて確認したいと思います。

その他の回答 (2)

  • t2hayashi
  • ベストアンサー率46% (102/219)
回答No.3

No.2さん、アドバイスありがとうございます。 >そんな制限を持っているRDBMSは聞いたことがありません たとえばマイクロソフトのアクセスは、主キーが無くとも(ユニークなフィールドが無くとも)テーブルの追加更新が可能です。これをSQLサーバーにアップサイジングした際に「更新できない」「追加できない」というのは良くある話です。 質問者の方はACCESS2000のDBから乗り換えとのことなので充分に可能性があることと思っての回答でしたが、はずしてましたでしょうか。

ron6
質問者

お礼

説明が抜けていたのですが、現在Access+ASPで運用しているサーバーではUPDATEできるのですが、別のサーバーにSQLServerをインストールしてAccessデータベースをインポート、+ASPで稼動させたらUPDATEできなかった、という状況です。(どちらもOSはwindows2000Serverです) このSQLServerをインストールしているサーバーPCではNorthwindへのUPDATEもできなかったことから、DBそのものの問題ではなく、インストール環境によるものと考えています。 他にアドバイスありましたらよろしくお願いします。

ron6
質問者

補足

原因わかりました。 IISの設定をいじくり回しているうちに匿名アクセスの設定を変に書き換えていました。これを初期値に戻すことでUPDATEできました。 それにしてもSELECTだけできるのは不思議ですね。 ありがとうございました。

回答No.2

質問への直接的な回答でなく、#1さんのアドバイスに対し一言。 >・UPDATEしたいテーブルに主キーはあるか。 >SQLサーバーはテーブルに1つ以上のユニークなフィールドがないと更新及び >追加ができません。DBの基本概念ですね。 SQL Serverを含め、そんな制限を持っているRDBMSは聞いたことがありません。 DBの基本概念というより、テーブル設計の基本ですね。

ron6
質問者

お礼

アクセスからインポートしたデータベースは主キーが設定されていない状態なのですね。気がつきませんでした。何分データベース初心者なもので...ありがとうございます。