こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

アクセスとは接続方法が違うのでしょうか。
確認すべきポイントなどありましたらご教授ください。
よろしくお願いします。

投稿日時 - 2007-12-10 22:29:38

QNo.3587882

困ってます

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

二点あります。

・UPDATEしたいテーブルに主キーはあるか。
SQLサーバーはテーブルに1つ以上のユニークなフィールドがないと更新及び追加ができません。DBの基本概念ですね。

・セキュリティの問題
更新したいテーブルに接続するユーザーにUPDATE権限はあるか。

あたりですね、怪しいのは。

ちなみにACCESSからSQLサーバーにリンクした場合は更新できるのですか?

投稿日時 - 2007-12-11 17:20:53

お礼

回答ありがとうございます。
原因はまだわかっていないのですが、
基本に帰ってSQLのサンプルデータベースに接続できるかNorthwindで確認してみましたところ、こちらでもだめでした。
これから環境側の問題がないか確認していきます。

アクセス権の問題の場合は、エラーメッセージとして”権限が無い”となるかと思うのですが、こちらも視野に入れて確認したいと思います。

投稿日時 - 2007-12-12 21:32:20

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

No.2さん、アドバイスありがとうございます。

>そんな制限を持っているRDBMSは聞いたことがありません

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

投稿日時 - 2007-12-12 16:41:07

補足

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

ありがとうございました。

投稿日時 - 2007-12-15 19:10:24

お礼

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

投稿日時 - 2007-12-12 21:52:16

ANo.2

質問への直接的な回答でなく、#1さんのアドバイスに対し一言。

>・UPDATEしたいテーブルに主キーはあるか。
>SQLサーバーはテーブルに1つ以上のユニークなフィールドがないと更新及び
>追加ができません。DBの基本概念ですね。

SQL Serverを含め、そんな制限を持っているRDBMSは聞いたことがありません。
DBの基本概念というより、テーブル設計の基本ですね。

投稿日時 - 2007-12-11 18:12:50

お礼

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

投稿日時 - 2007-12-12 21:34:58

あなたにオススメの質問