プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。
以前も、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に設定が残っている為、以前のサーバを見にいってしまっているのでしょうか?
それとも、単純に私の設定が間違っているのでしょうか?


知識不足で分かりにくい表現ばかりだと思いますが、どうぞよろしくお願い致します。

A 回答 (1件)

> しかし、確認するとエラーになり、どうも以前使っていたサーバへ接続しているような感じです。



どのような確認をして、どういったエラーがが出て、以前のサーバーへ接続しようとしているという結論になったのかを説明してみては?

旧サーバーをシャットダウンする。
旧サーバー上の DSN 定義の名前を変える。
旧サーバー上の DSN 定義を削除する。
旧サーバー上の MDB を別の場所に移す/ファイル名を変える/削除する
など、どれでもまぁ 「旧サーバーの MDB への連絡路を絶つ」 という状態にしてから新サーバーでテストしてみましたか?

明らかに DSN 名を使って MDB へアクセスしているコードが書かれている ASP のページを表示しようとしても旧サーバーに接続しているのでしょうか。
エラーが出たページのコードをもう一度確認してみてはどうでしょうかね。
おそらく一部のページでは接続文字列を直接コードの中に書いちゃってるって線じゃないでしょうか。

# まさか新サーバーに作った DSN に旧サーバーの MDB へのパスが書かれているってことはないと思いますが。

この回答への補足

回答ありがとうございます。
まず、使用しているサーバへリモートデスクトップで入り、ローカルアクセスをしたところ、下記エラーが出ました。


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には新サーバのパスを書いています。
さすがに旧サーバのパスは書いてないです。

元々、海外サーバで運用し開発者も海外の方らしく、開発者の方に詳細を聞いて欲しいと上司に言っても、うやむやにされるので詳細が分からないまま、サーバでテストしている状態です。

こんな状態で質問してしまって、本当にすみません。
よろしくお願い致します。

補足日時:2013/02/21 16:10
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/02/22 13:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!