現在の 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 [...]
データベースの AUTOCLOSE はオフです。TCP ソケット タイムアウトは、デフォルトの Windows システムです。
アプリケーション サーバーはマシン #1 (Windows サーバー) にあり、SQL サーバーはマシン #2 (Windows サーバー) にあります。
接続 (netstat) を確認すると、約 20 ~ 30 人のユーザーに対して 250 の接続が開いています。perform.exe を実行して、データ ディスクとログ ディスクの SQL サーバーでのアイドル時間を確認しました。
database.yml には接続がpool:32
ありreconnect:true
ます。
私には、tinyTDS が接続を失ったように見え、例外によって再接続が妨げられます。
問題は、問題をデバッグして問題を特定するにはどうすればよいかということです。
アップデート
私の間違いです。元のエラー メッセージは tinytDS 0.5.x のものです。最新バージョンに更新したため、追加または代わりに次のエラーが表示されます。
ActiveRecord::LostConnection (TinyTds::Error: DBPROCESS is dead or not enabled: BEGIN TRANSACTION):