1

我有一个连接到 SQL Server 数据库的 Ruby 脚本(非 Rails)。从命令行运行时,它运行良好。当通过 http 请求执行时,它会产生错误,特别是在打开数据库连接时。关于 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 类基于 David Mullet 的代码,可在http://rubyonwindows.blogspot.com/2007/03/ruby-ado-and-sqlserver.html找到(为简洁起见,此处未复制)。

从命令行,数据库打开正常,我从脚本中得到了预期的结果。当我通过内部服务器 (http://qatools/getTask.rb) 调用脚本时,我的日志文件中出现以下错误:

已获救:无法访问 QADB:无法从“ADODB.Connection”创建 WIN32OLE 对象 HRESULT 错误代码:0x8007007e 找不到指定的模块。

我考虑过我可能缺少一个 DLL。其他研究让我找到了 ntwdblib.dll——我尝试下载一个副本并将其放在不同的文件夹中。我还考虑过我可能面临 Apache 配置问题和/或安全/权限问题,但我还没有找到任何适合我的特定问题的解决方案。

有任何想法吗?

4

0 回答 0