OracleDBのバージョンアップ対応中に、新しいOracleDBに対してODBC接続を行うVBScript(*.wsf)をcsrciptコマンドで起動したときに発生した問題です。
Problem
cscript
でOracleDB 19cのODBCを使い接続したところエラーになる。
前提:
- OSは、Windows Server 2016。64bit OSです。
- OracleDBのバージョンは、19cです。
- ODBCドライバーのバージョンは、同じく。ただし32bit版です。
- ワークフローを管理するツールから実行すると正常終了するが、あえて手実行すると異常終了する。
コマンドのイメージ:
cscript path\to\script.wsf
スクリプトのロジックのイメージ:
path\to\script.wsf
Set conn = CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft ODBC for Oracle};" & _
"CONNECTSTRING=<tns_name>;UID=<user_schema>;PWD=<password>"
エラーメッセージ:
[Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。
Solution
理由はいくつもありえますが、今回は手動実行時に使用した cscript
コマンドが64bit版だったのが原因でした。
ワークフロー管理ツールがこのスクリプトを実行するときは、きちんと32bit版のコマンドを利用しているようです。
正しいコマンドのイメージ:
C:\Windows\SysWOW64\cscript path\to\script.wsf
他にもODBCドライバー名として指定する文字列が誤っているとか、(今回とは逆に)64bit版のドライバーをインストールしてしまっているとか、そもそもODBCドライバーのインストールをしくじっているとか、そういうケースでも同じようなエラーメッセージが出力されることでしょう。