ASPでAccess接続 ODBCの設定について

このQ&Aのポイント
  • ASPでAccessファイルへの接続方法として、ODBCデータソースを使用した方法がある。
  • しかし、ODBCデータソースへの設定が間違っている場合、エラーが発生する可能性がある。
  • また、以前使用していたサーバのODBC設定が残っている場合、接続先が誤ってしまうことがある。
回答を見る
  • ベストアンサー

ASPでAccess接続 ODBCの設定について

こんにちは。 以前も、ASPでAccessファイルへの接続について、こちらでお世話になりました。 別サーバで作ったショッピングシステムのサーバ移行をしています。 これは別の人が作ったシステムで、社内には誰もわかる人がいません。 (私が簡単なサイトが作れるので、話が回ってきた感じです) ASPで作られているのですが、91個のASPファイルから同一Accessファイルへ接続している作りになっていることが今日分かりました。 コードに直接フルパスを記入するやり方ではなく、ODBCデータソースにファイルを選択してやり、DSN名で呼び出すやり方でコードが書いてあったので、調べてODBCデータソースにDBを選択しました。 しかし、確認するとエラーになり、どうも以前使っていたサーバへ接続しているような感じです。 コードは Set cnn2=Server.CreateObject("ADODB.Connection") cnn2.open DSN名 ODBCデータソースへの設定は、ユーザDSNとシステムDSNに MS Access Driver(mdb)を追加し、追加する際にデータベース部分に接続したいAccessファイルを選択しています。 その時のDSN名を、コードに記載されている名前と同じDSN名にしました。 試しにDSN名ではなくフルパスでAccessファイルに接続したら、問題なく表示されました。 この現象は、以前使っていたサーバのODBCに設定が残っている為、以前のサーバを見にいってしまっているのでしょうか? それとも、単純に私の設定が間違っているのでしょうか? 知識不足で分かりにくい表現ばかりだと思いますが、どうぞよろしくお願い致します。

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

  • ベストアンサー
  • x-1919
  • ベストアンサー率52% (91/173)
回答No.1

> しかし、確認するとエラーになり、どうも以前使っていたサーバへ接続しているような感じです。 どのような確認をして、どういったエラーがが出て、以前のサーバーへ接続しようとしているという結論になったのかを説明してみては? 旧サーバーをシャットダウンする。 旧サーバー上の DSN 定義の名前を変える。 旧サーバー上の DSN 定義を削除する。 旧サーバー上の MDB を別の場所に移す/ファイル名を変える/削除する など、どれでもまぁ 「旧サーバーの MDB への連絡路を絶つ」 という状態にしてから新サーバーでテストしてみましたか? 明らかに DSN 名を使って MDB へアクセスしているコードが書かれている ASP のページを表示しようとしても旧サーバーに接続しているのでしょうか。 エラーが出たページのコードをもう一度確認してみてはどうでしょうかね。 おそらく一部のページでは接続文字列を直接コードの中に書いちゃってるって線じゃないでしょうか。 # まさか新サーバーに作った DSN に旧サーバーの MDB へのパスが書かれているってことはないと思いますが。

mmr0920
質問者

お礼

昨日、接続部分だけのコードが書いてあるファイルを発見しました。 原因判明です。 ありがとうございました。ご回答、参考になりました。

mmr0920
質問者

補足

回答ありがとうございます。 まず、使用しているサーバへリモートデスクトップで入り、ローカルアクセスをしたところ、下記エラーが出ました。 Microsoft JET Database Engine エラー '80004005' パス '以前使っていたであろうサーバのパス' は正しくありません。パス名に間違いがないことと、ファイルが置かれたサーバーに接続していることを確認してください。 次に、旧サーバでの状態ですが、確認が取れていない状態です。 これは早急に確認を取り、旧サーバ上の設定をクリアにして貰います。 コードについては、 <% Dim sSQL2,rs2,cnn2 Dim lMetaDesc, lMetaKwds Set rs2 = Server.CreateObject("ADODB.RecordSet") Set cnn2=Server.CreateObject("ADODB.Connection") cnn2.open DSN名 // Tags = request.querystring("Tags") // Tags = 14 sSQL2 = "SELECT * FROM content WHERE Id=" & Tags rs2.Open sSQL2,cnn2,0,1 if NOT rs2.EOF then lMetaKwds=rs2("MetaKwds") lMetaDesc=rs2("MetaDesc") %> <meta name="keywords" content="<%=lMetaKwds%>"> <meta name="description" content="<%=lMetaDesc%>"> <% end if rs2.Close cnn2.Close set rs2 = nothing set cnn2 = nothing %> が全てです。 試しに、現サーバのDSN名を「例:AAA」として、オープンの部分を cnn2.open AAA としてみました。 (ODBCではデータソース選択済み、単純にDSN名を変えただけ) その上で再度ローカルアクセスしてみましたが、エラー内容は変わりませんでした。 新サーバのDSNには新サーバのパスを書いています。 さすがに旧サーバのパスは書いてないです。 元々、海外サーバで運用し開発者も海外の方らしく、開発者の方に詳細を聞いて欲しいと上司に言っても、うやむやにされるので詳細が分からないまま、サーバでテストしている状態です。 こんな状態で質問してしまって、本当にすみません。 よろしくお願い致します。

関連するQ&A

  • AccessでODBC接続できない

    (1)コントロールパネル⇒管理ツール⇒ODBCを選択。 (2)「システムDSN」タブを選択し、「追加」を選択。 (3)ローカルにあるエクセルファイルを選択。データソース名はtest。 (4)Access2003を起動し、テーブルのリンクでODBCを選択し、(3)で作ったtestを選択すると、ODBCを使用して外部MicrosoftJet…のエラーメッセージ。 どなたか解決方法を教えてください。

  • ODBCを使用する場合のファイルDSNの設定

    環境 WindowsXP Pro Visual Studio.NET 2003 インストールしたもの MySQL(ver:4.1.11) MyODBC-3.51.11-1-win.exe ODBC .NET Data Provider(ver:1.0.4030.0) (MDAC(ver:2.8)はいつのまにか勝手に入ってました) 「コントロールパネル」→「管理ツール」→「データ ソース (ODBC)」から「ODBCデータソースアドミニストレータ」を起動して、ファイルDSNタブから追加で【MySQL ODBC 3.51 Driver】を選択し「適当な名前」を入れて、「適当な名前」.dsnがファイルDSNに作成されるのですが、ダブルクリックしてみると 「一般エラー:DSNファイルC:\~~~~.dsnが無効です。」となってしまいます。 ユーザーDSNとシステムDSNはちゃんと追加でき、「Connector/ODBC」も設定でき、Access2003、VB.NETからMySQLで作ったテーブルは読み取れました。 VB.NETのサーバーエクスプローラから接続の追加で、データリンクプロパティのプロバイダタブから「Microsoft OLE DB Provider for ODBC Drivers」 を選び、接続タブから「接続文字列を使用する」にチェックを付けビルドで開いたデータソースの選択欄にファイルDSNで作った.dsnは表示されますが、選択してもデータリンクエラー「ドライバへの接続中にエラーが発生したため、操作を実行できません。」となりやはりファイルdsnが使えません。 どうやってファイルDSNを設定したらいいのでしょうか?

  • SQLServer接続する為のODBC作成について

    現在、windows2008サーバーより アクセスのシステムをPC5台で共有管理しております。 さらにPC(Windows7)を導入したため Windows7でAccess2007とSQL Serverを接続する為のODBCの作成し 設定してます。 他のPCの環境と同じように スタート/コントロールパネル/管理ツール/【データソース(ODBC)】 ODBC データソース アドミニストレーター画面で システムDSNタブを選択し、【追加】をクリック 【SQL Server】を選択し、【完了】をクリック。 ・新しいデータソースの名前:任意 ・データソースについての説明:任意 ・接続する SQL Server サーバー名:インストールしたサーバー名 QL Server側の設定で作成したログインユーザーの【ログインID】と【パスワード】を入力 【既定のデータベースを以下のものに変更する】にチェックを入れ 接続したいデータベースを選択し、【次へ】 【データソースのテスト】→【テストは無事に完了しました。】 とここまで設定は終了したのですが アクセスのシステムを起動しますと ODBC呼び出しは失敗しましたとなります。 もうベンダーと契約は切れているので 問合せできないのですが なにか見直す部分や確認事項はありますでしょうか? どうぞよろしくお願いします。

  • ODBC接続で困っています。

    ODBC接続で困っています。 いつもお世話になっております。 VB6.0からODBCを利用してACCESSに接続をしたいのですが、 接続文字列が良く分かりません。 色々と調べてみたのですが、 管理ツールからODBCデータソースを作成(Microsoft Access Driver (*.mdb)を使用)して、  DSN=データソース名 という風にするのと、  Driver={Microsoft Access Driver (*.mdb)};Dbq=MDBファイルパス; とするのとは同じなのでしょうか? 前者では無事に接続できたのですが、後者では接続できませんでした。 MDBファイルのパスは動的にしたいので、できれば後者の方が良いのですが、 どうしたら良いでしょうか…。 よろしくお願い致します。

  • ACCESSを使ってのODBC接続がうまくいかない

    クライアント側のACCESSを使いODBC経由でMySQLへ接続しようとしたらうまく接続が出来ません。 現象はACCESSの、[新規作成] - [テーブルのリンク] - ファイルの種類を[ODBC Databases ()] - コンピュータデータソースにあるODBCを選択。 すると普通はここでテーブルの一覧が表示されるはずが、最初の画面に戻ってしまいます。 他のソフト(EXCELなど)でODBC接続を行ったところうまくいきます。なのでODBC自体の設定は問題ないと考えられます。 以前はうまく行っていたのですが、ACCESSのデータファイル(.mdb)を一度削除して新たに作り直したらうまくいかなくなりました。 この現象で何かわかる方いらっしゃいますか? よろしくお願いします。 MySQL 4.0 ODBC 3.51 ACCESS 2000

  • ACCESSからのODBC接続について

    Windows2000サーバー上にあるアクセスファイル(別のOracle9サーバーにODBCリンクしている)をWindowsXpパソコンにコピーしましたが、「ODBC-xxxxへの接続が失敗しました」と表示されOracleデータを参照できません。 WindowsXpには、Oracleクライアントはインストール済み、DSNにもMicrosoft ODBC for Oracleを登録済みです。新規にODBCリンクすることは可能です。 エラーなく参照できるようにするにはどうすればいいでしょうか。

  • ASP ODBC以外のSQLserver接続方法

    元来ASPでSQLサーバーに接続する際にODBCデータソースに登録されてるデータソース名を指定すると思うのですが、ODBC以外での方法はありますか? また、ある場合は具体的なソース等が記述されているサイトがありましたら教えてください

  • mdbを直接開いてもasp側に影響を与えない方法について

    お世話になります。当方、Windows Server 2003 R2 SP1 で IIS6.0 を使用しています。 サーバ側に設置しているmdbファイルをODBCでシステムDSNに登録し、ASPから 接続しております。 メンテナンスなどで直接mdbファイルを開いている時に、ASPのページに アクセスすると以下のエラーメッセージが出て正常表示が出来なくなります。 ======================================================== HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス -------------------------------------------------------- エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] '(不明)' は既に使用されているので、使用できませんでした。 ======================================================== mdbファイルを直接開いても、ASP側でもエラー表示されないように するにはどうしたらよいでしょうか? ソースは以下のようにしております。 Set cnn=Server.CreateObject("ADODB.Connection") cnn.open "dummy" cnn.close cnn.open "testdb"  '// ODBCをtestdbにしています。 SQL = "SELECT * FROM M_USER ORDER BY USERID" Set rs1 = cnn.Execute(SQL) よろしくお願いいたします。

  • AccessからODBC経由でのSQLServerへの接続

    Access(2002)からSQLServer2000(8.0 Developer Edition)へODBC経由で接続にいってテーブルを参照したのですが読み取り専用でデータの変更、レコードの追加・削除等ができません。 データの変更等ができるようにしたいのですが、どうすればよいのでしょうか? 接続するときのユーザーは接続先のデータベースに対してオーナー権限を持っています。また、DSNはシステムDSN、ファイルDSNでそれぞれ作り接続を試してみましたが両方とも読み取り専用で開いてしまいました。 ちなみにPHPでODBC接続してINSERTするプログラムを作り動かしたところ問題なく動きました。 宜しくお願い致します。

  • ODBC接続に関して

    教えて下さい。 Oracle Database 11g Express Edition をインストールし、そこにODBC経由で 接続しようと考えていますが、どうも思ったように接続ができません。 ODBCは、  1.[スタート]→[コントロールパネル]→[管理ツール]→[データ ソース (ODBC)]を選択。  2.ODBCデータソースアドミニストレータのユーザDSNタブの追加ボタンを選択。  3.データソースの新規作成から「Oracle in XE」を選択。 して設定してあります。 Oracle側にユーザとして、"ABC"というユーザ(ワークスペース管理者)を作成、そのユーザで、 Oracle ODBC Driver ConfigurationのUserIDを追加しましたが、接続できません。  Unable to connect  SQLState=28000  [Oracle][ODBC][Ora]ORA-01017 ; invalid username/password ;logon  denied というエラーが表示されます。 但し、SYSTEMというユーザでは接続できます。 ユーザ名/パスワードは間違っていませんが、何が問題でしょうか??? そもそもの考え方が間違っているでしょうか、、、 教えて下さい。 よろしくお願いします。

専門家に質問してみよう