Hi,
Es geht um eine VB.NET-Datenbankanwendung, die auf einen SQL-Server zugreift. Ich weiß jetzt nicht, in welchem Forum das besser aufgehoben ist, für die Fehlerursache aber vermutlich eher hier...
In letzter zeit bekommen wir immer häufiger Timeouts, wenn aus meiner Applikation heraus ein Datensatz gespeichert wird (das Programm stellt einen "UPDATE Tabelle With (ROWLOCK) SET feld1='xxx', feld2=NULL, feld3='abc', feld4=y,..., feld27='xyz WHERE ID=a' String zusammen und schickt den an die Datenbank).
Ich erhalte eine Fehlermeldung "Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding". Unsere IT-Abteilung meint, das Netwerk wäre in Ordnung, und umgestellt hätten sie in letzter Zeit auch nichts, einen signifikanten Anstieg der Zugriffsrate oder der Datenbank (dass die Datenbasis einfach zu groß ist und der Server deshalb so lange braucht) ist auch nicht in dem Maße nachvollziehbar. Gegenseitige Sperren sind auch unwahrscheinlich, da von der Software schon sichergestelltwird, dass keine 2 Personen auf den gleichen Datensatz schreibend zugreifen, und Lesezugriffe immer ein WITH (NOLOCK) mitbekommen.
Die Fehlersuche kann also noch etwas dauern. Vielleicht weiß ja hier jemand, woran es noch liegen könnte
Jedenfalls dachte ich daran, bis der Fehler gefunden und behoben ist, bei einer Exception aufgrund eines Timeouts einfach mit einem längeren Timeout nochmal nachzufragen. Kann ich den überhaupt für ein einzelnes SqlCommand umsetzen, und wenn ja, in welcher Eigenschaft, oder ist das eine Einstellung des Servers, auf die ich als anfragende Applikation eh keinen Einfluss habe?
Gruß
Martin Dietz
Es geht um eine VB.NET-Datenbankanwendung, die auf einen SQL-Server zugreift. Ich weiß jetzt nicht, in welchem Forum das besser aufgehoben ist, für die Fehlerursache aber vermutlich eher hier...
In letzter zeit bekommen wir immer häufiger Timeouts, wenn aus meiner Applikation heraus ein Datensatz gespeichert wird (das Programm stellt einen "UPDATE Tabelle With (ROWLOCK) SET feld1='xxx', feld2=NULL, feld3='abc', feld4=y,..., feld27='xyz WHERE ID=a' String zusammen und schickt den an die Datenbank).
Ich erhalte eine Fehlermeldung "Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding". Unsere IT-Abteilung meint, das Netwerk wäre in Ordnung, und umgestellt hätten sie in letzter Zeit auch nichts, einen signifikanten Anstieg der Zugriffsrate oder der Datenbank (dass die Datenbasis einfach zu groß ist und der Server deshalb so lange braucht) ist auch nicht in dem Maße nachvollziehbar. Gegenseitige Sperren sind auch unwahrscheinlich, da von der Software schon sichergestelltwird, dass keine 2 Personen auf den gleichen Datensatz schreibend zugreifen, und Lesezugriffe immer ein WITH (NOLOCK) mitbekommen.
Die Fehlersuche kann also noch etwas dauern. Vielleicht weiß ja hier jemand, woran es noch liegen könnte
Jedenfalls dachte ich daran, bis der Fehler gefunden und behoben ist, bei einer Exception aufgrund eines Timeouts einfach mit einem längeren Timeout nochmal nachzufragen. Kann ich den überhaupt für ein einzelnes SqlCommand umsetzen, und wenn ja, in welcher Eigenschaft, oder ist das eine Einstellung des Servers, auf die ich als anfragende Applikation eh keinen Einfluss habe?
Gruß
Martin Dietz
Comment