- ベストアンサー
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 アクセスとは接続方法が違うのでしょうか。 確認すべきポイントなどありましたらご教授ください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
二点あります。 ・UPDATEしたいテーブルに主キーはあるか。 SQLサーバーはテーブルに1つ以上のユニークなフィールドがないと更新及び追加ができません。DBの基本概念ですね。 ・セキュリティの問題 更新したいテーブルに接続するユーザーにUPDATE権限はあるか。 あたりですね、怪しいのは。 ちなみにACCESSからSQLサーバーにリンクした場合は更新できるのですか?
その他の回答 (2)
- t2hayashi
- ベストアンサー率46% (102/219)
No.2さん、アドバイスありがとうございます。 >そんな制限を持っているRDBMSは聞いたことがありません たとえばマイクロソフトのアクセスは、主キーが無くとも(ユニークなフィールドが無くとも)テーブルの追加更新が可能です。これをSQLサーバーにアップサイジングした際に「更新できない」「追加できない」というのは良くある話です。 質問者の方はACCESS2000のDBから乗り換えとのことなので充分に可能性があることと思っての回答でしたが、はずしてましたでしょうか。
お礼
説明が抜けていたのですが、現在Access+ASPで運用しているサーバーではUPDATEできるのですが、別のサーバーにSQLServerをインストールしてAccessデータベースをインポート、+ASPで稼動させたらUPDATEできなかった、という状況です。(どちらもOSはwindows2000Serverです) このSQLServerをインストールしているサーバーPCではNorthwindへのUPDATEもできなかったことから、DBそのものの問題ではなく、インストール環境によるものと考えています。 他にアドバイスありましたらよろしくお願いします。
補足
原因わかりました。 IISの設定をいじくり回しているうちに匿名アクセスの設定を変に書き換えていました。これを初期値に戻すことでUPDATEできました。 それにしてもSELECTだけできるのは不思議ですね。 ありがとうございました。
- chukenkenkou
- ベストアンサー率43% (833/1926)
質問への直接的な回答でなく、#1さんのアドバイスに対し一言。 >・UPDATEしたいテーブルに主キーはあるか。 >SQLサーバーはテーブルに1つ以上のユニークなフィールドがないと更新及び >追加ができません。DBの基本概念ですね。 SQL Serverを含め、そんな制限を持っているRDBMSは聞いたことがありません。 DBの基本概念というより、テーブル設計の基本ですね。
お礼
アクセスからインポートしたデータベースは主キーが設定されていない状態なのですね。気がつきませんでした。何分データベース初心者なもので...ありがとうございます。
お礼
回答ありがとうございます。 原因はまだわかっていないのですが、 基本に帰ってSQLのサンプルデータベースに接続できるかNorthwindで確認してみましたところ、こちらでもだめでした。 これから環境側の問題がないか確認していきます。 アクセス権の問題の場合は、エラーメッセージとして”権限が無い”となるかと思うのですが、こちらも視野に入れて確認したいと思います。