【发布时间】:2015-02-03 09:54:36
【问题描述】:
我们正在使用当前 tinyTDS gem 0.6.2 在 rails 3.2.12 (ruby 1.9.3) 上运行 ruby on rails 应用程序。
我们使用 MS SQL 2012 或 2014 并面临比平常更多的以下错误消息:
TinyTds::Error: Adaptive Server connection timed out: EXEC sp_executesql [...]
数据库自动关闭已关闭。 TCP Socket Timeouts 是默认的 Windows 系统。
应用程序服务器在机器 #1(Windows 服务器)上,SQL 服务器在机器 #2(Windows 服务器)上。
当我检查连接 (netstat) 时,我为大约 20-30 个用户打开了大约 250 个连接。 我运行 perform.exe 来查看 SQL Server 上数据和日志磁盘的空闲时间。
database.yml 有连接pool:32 和reconnect:true。
在我看来,tinyTDS 似乎失去了连接,并且任何异常都会阻止重新连接。
问题是,如何调试问题以找出问题所在?
更新
我的错,原来的错误信息属于 tinytDS 0.5.x。由于我更新到最新版本,因此我额外或改为收到以下错误:
ActiveRecord::LostConnection (TinyTds::Error: DBPROCESS is dead or not enabled: BEGIN TRANSACTION):
【问题讨论】:
-
另外,你编译的 FreeTDS 版本是什么?
-
例如运行“tsql -C”会在大多数情况下显示系统有什么。
-
我自己没有安装 tinyTDS,我在 windows 上使用了“gem install tinytds”。
-
"tsql -C" 是什么命令?你在应用程序或数据库服务器上运行它?
-
啊,所以如果您使用的是预构建的 windows 二进制 gem,那么 FreeTDS 是 0.91,这是最新的稳定版,这也很好。我见过 unix 系统将 TinyTDS 编译为 FreeTDS v0.82 的问题,并且之前也曾引起过类似的问题。
标签: ruby-on-rails ruby sql-server tiny-tds