Moin,
ich habe eine StoredProcedure auf
MSSQL 2000 Server, welche im Schnitt eine Laufzeit von ca. 40 bis 50 Sekunden hat. Angestoßen wird das ganze von einem Delphiprogramm per
ADO-Connection. Bisher gab es keine Probleme, ausser dass ich Fehlermeldungen beim Starten per
ADO nicht "hochgereicht" bekam, also keine
Exception ausgelöst wurde. Ich habe dann erfahren, ein simples "SET NOCOUNT ON" veranlasst den
SQL Server, die "x Rows affected" Meldungen zu unterlassen und der
ADO-Treiber dann auf Fehlermeldungen auch regiert. Allerdings hatte ich daraufhin den Effekt, dass ich in ein "Timeout expired" gerannt bin. Der QueryAnalyzer macht da allerdings keine Probleme.
Da "SET NOCOUNT ON" die einzige Änderung war, habe ich den Befehl wieder entfernt und siehe da, die SP lief wieder unbedarft durch und hat auch brav getan, was sie sollte.
Meine Vermutung ist nun, dass durch das "SET NOCOUNT ON" ja keine Meldungen mehr seitens des
SQL Servers abgeschickt werden und der Server bis zum Ablauf der 40 bis 50 Sekunden still schweigt und
ADO daraufhin von einem Verbindungsabbruch ausgeht.
Ich habe ein schon in Google nach dem Thema gesucht, aber das Problem wurde nirgends erwähnt.
Kennt jemand dieses Verhalten und hat evtl. einen Workaroung, ohne das Timeout der Verbindung zu erhöhen? (Wenn wirklich mal Verbindungsabbruch nach 30 Sekunden ist, würde ich das auch gerne in den 30 Sekunden Standardtimeout erfahren).
Besten Dank
MfG McLane