Wie Abfangen von SQL Server-Timeout-Ausnahmen
Muss ich speziell fangen SQL server-timeout-Ausnahmen, so dass Sie anders gehandhabt werden. Ich weiß, ich könnte fangen die SqlException und dann prüfen, ob der message-string Enthält "Timeout", aber Frage mich, ob es gibt ein besserer Weg, es zu tun?
try
{
//some code
}
catch (SqlException ex)
{
if (ex.Message.Contains("Timeout"))
{
//handle timeout
}
else
{
throw;
}
}
Kommentar zu dem Problem
Sind Sie auf der Suche nach einem ConnectionTimeout oder eine CommandTimeout, sprich erwartest du, dass die Verbindung fehlschlägt oder der ausgeführte Befehl zu scheitern?
Ich bin auf der Suche nach einem CommandTimeout, die festgelegt ist auf einen Standardwert von 30 Sekunden, ich denke,
InformationsquelleAutor der Frage brodie | 2008-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu überprüfen, ob ein timeout, ich glaube, Sie überprüfen Sie den Wert der ex.Anzahl. Wenn es ist -2, dann haben Sie eine timeout-situation.
-2 ist der Fehlercode für timeout, zurück von DBNETLIB, die MDAC-Treiber für SQL Server. Dies kann gesehen werden, durch das herunterladen Reflektor, und suchen unter System.Daten.SqlClient.TdsEnums für TIMEOUT_EXPIRED.
Ihren code Lesen würde:
Code zu demonstrieren, scheitern:
InformationsquelleAutor der Antwort Jonathan
hier: http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.adonet/2006-10/msg00064.html
Lesen Sie auch, dass Thomas Weingartner schrieb:
...
InformationsquelleAutor der Antwort Roland Pihlakas
Was ist der Wert für die SqlException.ErrorCode-Eigenschaft? Kann Sie funktionieren?
Wenn man timeouts, kann es sich lohnen, die überprüfung der code für -2146232060.
Ich würde dies als eine static const in Ihrem data code.
InformationsquelleAutor der Antwort Rob Cooper