2009-07-01 23 views
7

Ich habe eine Ausnahmebehandlungsroutine für den Typ SqlException und ich schaue auf die SqlException.Number -Eigenschaft der Ausnahme, um festzustellen, ob eine Deadlock aufgetreten ist (1205). Ich bin currious, anstatt SqlException.Number == 1205 zu schreiben, gibt es eine enum, auf die ich verweisen kann, die etwas ähnlich SqlException.Number == SqlExceptionNumberEnum.DeadLockVictim erzeugen würde?.NET SqlClient-Fehler-Nummer Enum-Typ

Es ist möglicherweise nicht möglich wegen der Schermenge potenzieller Fehlermeldungen/Zahlen, aber es war es wert, gefragt zu werden. Vielen Dank!

Antwort

1

Nicht, dass ich weiß. Insbesondere können Sie Ihre eigenen Fehlernummern mit sp_addmessage definieren, und die Fehler ändern (wachsen) pro SQL-Server-Version, so würde es schnell ein Problem sein, wenn Sie (zum Beispiel) .NET 2.0 mit SQL Server 2008 verwenden würden Deine Nummern würden existieren.

1

Leider glaube ich nicht, dass dies machbar ist. Wenn Sie die folgende Abfrage ausführen, gibt es

select * from sys.messages where language_id=1033 and severity between 11 and 16 

es erzeugt mehr als sechstausend Zeilen. Sie könnten eine kleine App schreiben, um die Tabelle zu analysieren und eine C# -Klasse mit const-Eigenschaften zu erzeugen, die jede Nachricht darstellen, aber es ist wahrscheinlich nicht die Mühe wert.