我已经研究了几个小时了,我似乎无法找到解决方案。
我有一个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) 但我无法弄清楚如何在当前上下文中使用该命令。 我尝试在服务器上的commmandline中调用它,它将无法正常工作,但话又说回来,我不确定它是做什么的,或者我是否可以从命令行调用它。
我试过打电话 netstat -a 它显示了当前的套接字,但我不知道如何处理这些信息。
我也看到了
服务重启
可以重新启动套接字,但我不确定要重启哪个套接字。
最后,在我的freetds.conf配置文件中,我有以下设置:
host = 192.168.0.220
port = 1433
tds version = 8.0
我不确定要走哪条路。我对Rails很满意,但是这个套接字的东西超出了我目前的理解范围。这也是一个Rails 2应用程序(遗留),这是我们的业务使用的一些核心流程的关键。我们无法升级到Rails 3,因为SQL 2000 Server的SQL服务器适配器gem不能与Rails 3一起使用。
有人可以帮忙吗?