C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: WindowsServer2008で.accdbを開く


(過去ログ 115 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■67714 / inTopicNo.1)  WindowsServer2008で.accdbを開く
  
□投稿者/ はなぷぅ (1回)-(2013/08/26(Mon) 20:36:44)

分類:[レガシ ASP] 

はじめまして。

以下の通りASPの移行で問題が発生し、困っております。
解決方法、事例等お持ちの方がいらっしゃいましたら
お力貸していただけないでしょうか?

【環境】
・旧環境
WindowsServer2003
Office2003

・新環境
WindowsServer2008(64bit)
Office2010(64bit)(Excelを選択インストールしています。)

・使用言語
ClassicASP(.asp)環境でVBを使用

【要件】
 ・旧環境から新環境へ移行。
 ・ASP.NETへのバージョンアップはしない
 ・新環境のOS、Officeはともに64bitをインストール

【状況】
IISの設定は一通り完了し、ASPプログラムの新環境への移行、
ASP自体の動作は確認しています。

移行したASPプログラムのうちAccessデータベース(.accdb)ファイルをOpenする箇所で
「プロバイダが見つかりません」というエラーが出てOpenすることができません。

Openする命令は以下の通り記述しています。
------
Dim IAdoss

Set IAdoss = Server.createObject("ADODB.Connection")
IDsn = "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Sourse =" & MDBファイルパス & ファイル名.accdb
IAdoss.Open IDsn
IAdoss.CursorLocation = 3

※mdbファイルパスとファイル名は仮です
-------

旧環境では"Microsoft.Jet.OLEDB.4.0"を使用しており
"Microsoft.Jet.OLEDB.4.0"から"Microsoft.ACE.OLEDB.12.0"に書き換えたのみです。

32bitアプリは64bitOSで動作することは可能
AccessDatabaseEngineをインストールすればよいということは
ネットで確認しましたが以下の通りの状態でした。

 @Office2010(64bit)がインストールされているため
    →AccessDatabaseEngine.exe(32bit版)インストール不可
→AccessDatabaseEngine_X64.exe(64bit版)をインストール
    →ASP:32bit、AccessDatabaseEngine:64bit
    →動作せず

 AOffice2010(64bit)をアンインストールすると
    →AccessDatabaseEngine_X64.exe(64bit版)インストール不可
    →AccessDatabaseEngine.exe(32bit版)をインストール可
    →ASP:32bit、AccessDatabaseEngine:32bit
    →正常に動作

ひとまずAであれば動作することが判明したのですが
要件の一つである「Office2010(64bit)をインストール」が満たされないため
どうしても「Office2010(64bit)をインストール」した状態で
ASPからAccessへ接続する方法が必要です。

ほかにも「Office2010(64bit)をインストール」した状態で
IISのアプリケーションプールの設定で
「32bitアプリケーションの有効化」をtrueにする
(ローカルのAdministratorでログイン)
のも試しましたが動作に変わりはありませんでした。

以上です。
よろしくお願いします。


引用返信 編集キー/
■67716 / inTopicNo.2)  Re[1]: WindowsServer2008で.accdbを開く
□投稿者/ 魔界の仮面弁士 (314回)-(2013/08/27(Tue) 00:39:56)
2013/08/27(Tue) 10:16:21 編集(投稿者)

No67714 (はなぷぅ さん) に返信
> WindowsServer2008(64bit)
Windows Server 2008 R2 ではなく、
Windows Server 2008,x64 なのですね?


> Office2010(64bit)(Excelを選択インストールしています。)
64bit 版の Access 2010 は導入されていないのですね?


> ClassicASP(.asp)環境でVBを使用
VB ではなく、VBScript なのではありませんか?

VB6 の WebClass(いわゆる IISアプリケーション)…では無いですよね。
http://pcdn.int21.co.jp/pcdn/vb/noriolib/vbmag/9811/vb6/



> 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
のそれぞれから実行してみることで、インストールの有無を判断できるかと思います。


> 移行した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

64bit 版に割り当てているなら、64bit プロバイダを導入した上で、
「32 ビット アプリケーションの有効化」を False にしてみてください。

32bit 版に割り当てているなら、32bit プロバイダを導入した上で、
「32 ビット アプリケーションの有効化」を True にしてみてください。


また、ASP の実行アカウント(BUILTIN\IUSR など)について、
accdb ファイルを配置しているフォルダに対する
書き込みアクセス権の有無も確認しておいた方が良いでしょう。
引用返信 編集キー/
■67726 / inTopicNo.3)  Re[2]: WindowsServer2008で.accdbを開く
□投稿者/ はなぷぅ (2回)-(2013/08/27(Tue) 20:12:14)
内容に不備あり申し訳ありませんでした。
回答いただきありがとうございます。


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


長々とすみません。
もしご存じのことがあればお知恵を貸していただけないでしょうか?
どうぞよろしくお願いします。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -