|
内容に不備あり申し訳ありませんでした。 回答いただきありがとうございます。
■No67716 (魔界の仮面弁士 さん) に返信 > 2013/08/27(Tue) 10:16:21 編集(投稿者) > > ■No67714 (はなぷぅ さん) に返信 >>WindowsServer2008(64bit) > Windows Server 2008 R2 ではなく、 > Windows Server 2008,x64 なのですね? > >
→WindowsServer2008 R2 Standard SP1(64ビットオペレーションシステム) でした。
>>Office2010(64bit)(Excelを選択インストールしています。) > 64bit 版の Access 2010 は導入されていないのですね? > >
→Access2010は導入していません。 Excelのみです。
>>ClassicASP(.asp)環境でVBを使用 > VB ではなく、VBScript なのではありませんか? > > VB6 の WebClass(いわゆる IISアプリケーション)…では無いですよね。 > http://pcdn.int21.co.jp/pcdn/vb/noriolib/vbmag/9811/vb6/ > >
→ASPで<Script Language=VBScript>と記述してあるので VBScriptだと思っていますがあっていますでしょうか。 > >>IDsn = "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Sourse =" & MDBファイルパス & ファイル名.accdb >>※mdbファイルパスとファイル名は仮です > 何故 MDBファイルのパスが必要なのでしょうか? > accdb ファイルのパスだけを指定すれば良いと思いますが…。 >
→蛇足でした。ご指摘の通りです。 特に意味はありませんので無視していただけますでしょうか。
> >>"Microsoft.Jet.OLEDB.4.0"から"Microsoft.ACE.OLEDB.12.0"に書き換えたのみです。 > > 32bit/64bit それぞれのプロバイダが導入済みかどうかを調べてみてください。 > たとえば、任意のフォルダに > > '-------------- > Option Explicit > Dim cn > Set cn = WScript.CreateObject("ADODB.Connection") > cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=True;Data Sourse=C:\temp\test.accdb" > MsgBox "OK", vbInformation > cn.Close > '-------------- > と書いた sample.vbs ファイルを配置しておき、それを > C:\Windows\system32\Cscript.exe > C:\Windows\syswow64\Cscript.exe > のそれぞれから実行してみることで、インストールの有無を判断できるかと思います。 >
→教えていただいた通りのvbsを作成し C:\Windows\system32\Cscript.exeで実行:正常終了 C:\Windows\syswow64\Cscript.exeで実行:エラー(プロバイダーがみつかりません)
⇒64bit版のプロバイダが導入されていました
> >>移行したASPプログラムのうちAccessデータベース(.accdb)ファイルをOpenする箇所で >>「プロバイダが見つかりません」というエラーが出てOpenすることができません。 > .asp に対するハンドラーマッピングを確認してみてください。 > (既定では、"ASPClassic" という名前になっていると思います) > 32bit 版と 64bit 版、いずれの ASP.DLL に割り当てていますか? > > 64bit版 … C:\Windows\system32\inetserv\asp.dll > 32bit版 … C:\Windows\syswow64\inetserv\asp.dll >
→ハンドラーマッピング画面を開き ASPClassicを右クリック、編集から「実行可能ファイル」を確認したところ C\:\Windows\system32\inetserv\asp.dllが設定されていました。
⇒ハンドラーマッピングは64bit版が割り当てられていました。 正確には%windir%\system32\inetserv\asp.dllが設定されていましたが コマンドプロンプトのechoコマンドで%windir%はc:\windowsであったので問題ないと思っています。
> 64bit 版に割り当てているなら、64bit プロバイダを導入した上で、 > 「32 ビット アプリケーションの有効化」を False にしてみてください。 > > 32bit 版に割り当てているなら、32bit プロバイダを導入した上で、 > 「32 ビット アプリケーションの有効化」を True にしてみてください。 >
→上記の通り教えていただいた方法で新環境では 64bit版に割り当てられており、64bitプロバイダが導入済みであることがわかりました。 ただし、この状態で「32bitアプリケーションの有効化」をFalseにしても動作しません。 (質問させていただく前に確認済みでした。)
ほかに確認するポイントはありますでしょうか? 念のため確認ですが、 Windowsserver2008 R2 SP1(64bit)にoffice2010(64 bit)(Excelのみ)を インストールしたサーバでASPを動作させることは可能ということで よいでしょうか?
> > また、ASP の実行アカウント(BUILTIN\IUSR など)について、 > accdb ファイルを配置しているフォルダに対する > 書き込みアクセス権の有無も確認しておいた方が良いでしょう。
→Accessファイルを配置しているフォルダにはフルコントロールのEveryoneユーザが 登録されているので問題ないと思っていたのですが 明示的にASP実行アカウントについても書き込みアクセス権を設定しておいたほうがいいでしょうか? (すみません、未確認です。)
またハンドラーマッピングで実行可能ファイルを確認した画面で「OK」を押してしまい その後ASP自体動作せず以下のメッセージが出るようになってしまいました。 本来はキャンセルを押すべきだったのですが。 ------------------- サーバーエラー405 このページへアクセスされたHTTP動詞は許可されていません。 無効なメソッド(HTTP動詞)でアクセスが試行されたため、検索中のページを表示できません。 ------------------
ASP自体が動作するように元に戻したいのですが確認すべき点はありますでしょうか? なお、ASPをインストールし、仮想ディレクトリを追加しただけで 他細かい設定は既定値のままです。IISの思い当たる設定を確認しました。以下の通りでした。
●要求のフィルター HTTP動詞タブ →設定はなく空欄
ファイル拡張子タブ →.aspは登録されていない
●ハンドラーマッピング ASPClassic → 編集 → 要求の制限
マップタブ 「要求のマップ先が次の場合のみにハンドラーを呼び出す」にチェック 「ファイル」にチェック
動詞タブ 「次の動詞のうちの一つ」にチェック 「GET,HEAD,POST」が設定されている
アクセスタブ 「スクリプト」にチェック
●ISAPIおよびCGIの制限 ActiveServerPages 制限:許可 パス:C:\Windows\system32\inetserv\asp.dll
長々とすみません。 もしご存じのことがあればお知恵を貸していただけないでしょうか? どうぞよろしくお願いします。
|