0

Windows 2000 から Windows 2012 Server に移行する ASP クラシック アプリケーションがあります。

次のコードを使用してxlsファイルをインポートします

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DRIVER={Microsoft Excel Driver (*.xls)}; IMEX=1; HDR=NO; Excel 8.0; DBQ=" & Server.MapPath("\Imports\") &"\"&fn& "; "

csvファイルの場合は次のとおりです

Set objConn = CreateObject("ADODB.Connection")
Set objRS = CreateObject("ADODB.Recordset")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPathtoCSVFile & ";Extended Properties=""text;HDR=YES;FMT=Delimited"""

この質問の答えに従ってExcel ODBC and 64 bit server Microsoft Access Database Engine 2010 Redistributableをダウンロードしてインストールしました。

上記の 32 ビット バージョンと 64 ビット バージョンの両方を試しましたが、アプリケーション プールの設定を [32 ビット アプリケーションを有効にする] を True に変更しない限り、どちらも機能しません。False に設定すると、以下のエラーが発生します。

Microsoft OLE DB Provider for ODBC Drivers エラー '80004005'

[Microsoft][ODBC Driver Manager] データ ソース名が見つからず、既定のドライバーが指定されていません

残念ながら、True に設定すると、その Web サイトの別の部分で PDF レンダリングが中断されます。

これまでに思いついた唯一の実行可能なオプションは、この部分を 32 ビットの独自のアプリケーション プールの下にセットアップすることです。

これを 64 ビット アプリケーション プールで実行するにはどうすればよいですか?

編集:そして、誰かがだまされたハンマーを持ってくる前に、問題を解決しない関連する質問は 、Accessデータベースを使用して64ビット環境で実行されているASPです

4

1 に答える 1

3

まず、64 ビット パッケージAccessDatabaseEngine_x64.exeが正常にインストールされていることを確認します。

その後、次の接続文字列を使用します。
64 ビット アプリケーション プールで問題が発生することはもうありません。

'Excel 97-2003
Set Connection = Server.CreateObject("ADODB.Connection")
    Connection.Open _
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\my\path\to\tables.xls;Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"";"
Set Recordset = Connection.Execute("Select * From [Sheet1$]")

'CSV / TXT
Connection.Open _
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\my\path\to\csv_dir\;Extended Properties=""text;HDR=YES;FMT=Delimited"";"
Set Recordset = Connection.Execute("Select * From table.csv")

connectionstrings.comは、常に接続文字列の良いリファレンスです。


于 2015-09-30T01:01:10.047 に答える