2009-07-08 12 views
2

Ich möchte wissen, wie Sie eine Zeitüberschreitung für den Ruby DBI ODBC-Treiber explizit festlegen, wenn Sie eine Verbindung zu SQL Server herstellen. Ich möchte, dass lange laufende Abfragen einfach Timeout und sich selbst abbrechen, weitere Serverressourcen und Rails-Prozesse speichern.Wie Festlegen von Timeout für Ruby ODBC-Treiber für SQL Server?

Dies geschah, während wir den ADO-basierten Ruby-Treiber verwendeten, aber jetzt, wo wir zu DBD :: ODBC gewechselt haben, treten keine Timeouts mehr auf.

Ich habe mich umgeschaut, kann aber nicht herausfinden, wie man den Wert für das Abfrage-Timeout einstellt. Ich habe versucht, einige Werte im Treiber explizit festzulegen und Timeout und ConnectionTimeout sowie Connect Timeout in der DSN-Konfiguration für die Verbindung anzugeben. Kein Glück.

Ihre Tipps und Hinweise werden sehr geschätzt.

Danke! Seth

Antwort

0

Wie wäre es, die gesamte Abfrage in die integrierte Timeout-Bibliothek von Ruby zu schreiben?

require 'timeout' 

begin 
    Timeout::timeout(5) { 
    @db.query(...) 
    } 
rescue Timeout::Error 
    puts "Too slow, forget about it." 
end