SQL Server データベースに接続する Ruby スクリプト (Rails 以外) があります。コマンドラインから実行すると、問題なく実行されます。http リクエストを介して実行すると、特に DB 接続を開くときにエラーが発生します。http/SQL メソッドの組み合わせに関する何かが失敗しています。
Windows 7 Ultimate (64 ビット)、Ruby 1.9.3p125、Apache 2.2.11 を搭載したマシンでスクリプトを実行しています。データベースは SQL Server 10.0.4000 で、別の (企業、内部) サーバーでホストされています。
スクリプトは次のようになります。
#!/Ruby193/bin/ruby
require 'win32ole'
...
$qadb = nil
begin
$qadb = SqlServer.new('192.168.100.249', 'qauser', 'password')
$qadb.open('qadb')
rescue
logRegression("Rescued: Unable to access QADB: #{$!}")
end
SqlServer クラスは、 http: //rubyonwindows.blogspot.com/2007/03/ruby-ado-and-sqlserver.html にある David Mullet のコードに基づいています (簡潔にするために、ここではコピーしません)。
コマンド ラインから、DB が正常に開き、スクリプトから期待される結果が得られます。内部サーバー (http://qatools/getTask.rb) 経由でスクリプトを呼び出すと、ログ ファイルに次のエラーが表示されます。
レスキュー: QADB にアクセスできません: `ADODB.Connection' から WIN32OLE オブジェクトを作成できませんでした HRESULT エラー コード: 0x8007007e 指定されたモジュールが見つかりませんでした。
DLL が不足している可能性があると考えました。他の調査により、ntwdblib.dll にたどり着きました -- コピーをダウンロードして、さまざまなフォルダに配置しようとしました。また、Apache 構成の問題やセキュリティ/権限の問題に直面している可能性も考えましたが、特定の問題に適合すると思われる解決策が見つかりませんでした。
何か案は?