Einzelnen Beitrag anzeigen

McLane

Registriert seit: 4. Sep 2004
37 Beiträge
 
Delphi 5 Professional
 
#1

Seltsames Verhalten von ADO bei SET NOCOUNT ON

  Alt 10. Okt 2005, 16:18
Datenbank: MSSQL Server • Version: 2000 • Zugriff über: ADO
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
  Mit Zitat antworten Zitat