64bit版WindowsPCで32bit用ODBCドライバーを使用する方法
こんばんは。
nanana-blog管理人のナナナです。
ブログを訪問し記事を読んでいただきありがとうございます。
仕事で使用しているPCをWindows7 32bitからWindows10 64bitに変更したところ
Windows7で使っていたバッチファイルが動かなくなりました。
Windowsでは同じアプリケーションでも32bit版と64bit版があるのでバッチファイルも
bitが違うことが原因でバッチファイルが動かなくなるのではないかと思い、
調べてみました。
Windows10 64bitのPCでバッチファイルを実行するとエラーになる
バッチファイルの内容は、Oracleデータベースからデータを抽出して結果を
メッセージボックスで表示させるというシンプルな処理です。
ファイルを実行すると「[Microsoft][ODBC Driver Manager]データソース名および
指定された既定のドライバーが見つかりません。」というエラーメッセージが
表示されて、処理が止まってしまいました。
エラーの原因はインストールしたOfficeだった
私が使用しているWindows10のPCにはMicrosoft Office Professional 2019の32bit版が
インストールされています。プレインストール版のためPC購入時には既に
インストールされていました。
そしてOracle接続時に使用しているODBCドライバーもOfficeと同じ32bit版が既に
インストールされていていたのです。
パソコンは64bitなので64bit版のODBCを使ってデータベースに接続しようとしますが
インストールされているODBCドライバーは32bit版のため
「[Microsoft][ODBC Driver Manager]データソース名および指定された既定のドライバー
が見つかりません。」というエラーメッセージが表示されていたのです。
バッチファイルをタスクから実行することで実行できた
32bit版のODBCドライバーしかインストールされていないのであれば、32bit版を
使うように指定する必要があり、それはタスクスケジューラで指定することが
できます。
タスクスケジューラを起動して基本タスクの作成をクリックします。
タスクの名前を入力して次へボタンをクリックします。
トリガーはバッチを起動する日時や曜日を指定します。今回は毎朝11時に
起動させていたので毎日11時に起動するように設定します。
操作ではプログラムの開始を選択して、次へボタンをクリックします。
一般的には「プログラム/スクリプト」に実行したいバッチファイルのパスを
入力しますが「C:\Windows\SysWOW64\wscript.exe」と入力します。
引数の追加に実行したいバッチファイルのパスを入力します。
次へボタンをクリックするとサマリーが表示されて、完了ボタンをクリックすれば
タスクの登録が完了です。
WOW64フォルダのWscript.exeを実行することで32bit用のODBCドライバーを
使うことができるので、エラーが発生しなくなりました。
最後に
いかがだったでしょうか。
今まで32bitパソコンしか使ってこなかったので、意識をしていませんでした。
他にも動かないアプリケーションやファイルなどがありそうなので、解決策を見つけて
ブログに書いていきます。