2

我已经研究了几个小时,但似乎找不到解决方案。

我有一个 Rails 2 应用程序,它使用 TinyTds gem ( tiny_tds ) 连接到我们公司本地托管的 SQL 2000 服务器。

在过去的 6 个月里,该应用程序几乎每天都连接到 SQL Server,没有任何问题。

突然,昨天尝试连接时,我开始收到错误消息:

TinyTds::Error: Unable to open socket
from /var/lib/gems/1.8/gems/tiny_tds-0.4.5/lib/tiny_tds/client.rb:60:in `connect'
from /var/lib/gems/1.8/gems/tiny_tds-0.4.5/lib/tiny_tds/client.rb:60:in `initialize'

根据我的研究,我看到有人建议我使用 SO_REUSEADDR 来允许它连接并忽略超时或“使用”限制,例如: setsockopt(sock, SOL_SOCKET, SO_REUSEADDR) 但我不知道如何使用该命令在当前语境下。我尝试在服务器上的命令行中调用它,但它不起作用,但话又说回来,我不确定它做了什么,或者我什至可以从命令行调用它。

我试过调用 netstat -a 来显示当前的套接字,但我不确定如何处理这些信息。

我还看到 service restart
可以重新启动套接字,但我不确定要重新启动哪个套接字。

最后,在我的 freetds.conf 配置文件中,我有以下设置:

host = 192.168.0.220 
port = 1433
tds version = 8.0

我不确定要走哪条路。我对 Rails 很满意,但这个套接字的东西超出了我目前的理解。这也是一个 Rails 2 应用程序(遗留),它是我们业务使用的一些核心流程的关键。由于 SQL 2000 服务器的 SQL 服务器适配器 gem 不能与 Rails 3 一起使用,我们无法升级到 Rails 3。

任何人都可以帮忙吗?

4

0 回答 0