2017-01-05 1 views
2

Ist es möglich, dass SqlException geworfen wird, wenn Sie versuchen, SQL-Prozedur und Eigenschaft ausführen Nummer wird 0?Ist es möglich, dass SqlException geworfen wird und Eigenschaft Nummer == 0?

Spezifische Situation: Domänencontroller ist nicht verfügbar/reagiert nicht und keine echte Kommunikation mit SQL Server aufgetreten.

+0

überprüfen Sie dies: https: //msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlerror.number (v = vs.110) .aspx – TheGameiswar

+0

und dies: https: // msdn. microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number(v=vs.110).aspx – TheGameiswar

+0

meinst du unterbrochene Konnektivität, wenn eine SqlConnection bereits zuvor geöffnet wurde? Die Client-Komponenten würden in diesem Fall immer noch die Nachricht "Ein Transport-Level-Fehler ist aufgetreten ..." werfen, eine Ausnahme hat eine Nummer (19 - Physische Verbindung ist nicht verwendbar). Es sind * jedoch Fehlerzustände mit der Nummer == 0 definiert. – dlatikay

Antwort

0

Nein, sollte es nicht möglich sein, dass SqlException.Number 0 ist, mit Ausnahme der folgenden Fälle:

  • Read-only Ausfall Routing
  • Server hatte schwere Fehler Verarbeitungsabfrage
  • Verarbeitete Löschung während Ergebnisse Parsen
  • fehlgeschlagen Sie nicht Benutzerinstanz

erstellen usi Unter der Annahme, Wenn Sie nur Lesezugriff für SQL Server 2016 verwenden, kann keiner dieser Fälle auf das von Ihnen beschriebene Szenario angewendet werden.

Verbleibende Fälle sind entweder eine von Null verschiedene Zahl von sysmessages, oder ein Win32-Fehlercode (der, da 0 == ERROR_SUCCESS, auch niemals Null wäre).

In der Praxis sehen Sie etwas in der Art von "Konnte keinen SSPI-Kontext erstellen" oder "Ein Transportfehler ist beim Senden der Anfrage an den Server aufgetreten" oder "Eine bestehende Verbindung wurde zwangsweise geschlossen Remote-Host ", und diese haben auch Win32-Fehlercodes ungleich Null.

Referenz: https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlerror.number(v=vs.110).aspx

Es kann sich lohnen, unter Hinweis darauf, dass SqlException.Number Synonym für das in seiner Errors Array Number Eigenschaft des ersten Eintrags ist, und dass Array könnte mehr als ein Element enthalten.

0

Beantworten meiner eigenen Frage. Ja, es ist möglich. Wir haben außerdem folgenden Code hinzugefügt:

und dies wurde heute geloggt.

2017-01-17 08:05:08,282 [r074008903] ERROR ProcessLogger Index #0 
Message: A severe error occurred on the current command. The results, if any, should be discarded. 
Error Number: 0 
LineNumber: 0 
Source: .Net SqlClient Data Provider 
Procedure: 

2017-01-17 08:05:08,282 [r074008903] ERROR ProcessLogger Index #1 
Message: A severe error occurred on the current command. The results, if any, should be discarded. 
Error Number: 0 
LineNumber: 0 
Source: .Net SqlClient Data Provider 
Procedure: 

2017-01-17 08:05:08,283 [r074008903] WARN ProcessLogger Exception was caught but ex.Number == 0! Changing to -69. 

Da in anderem Ort _ExitCode verwendet wurde, um zu bestimmen, ist etwas in dieser besonderen Situation falsch war, dass wir falsche Informationen hatten.

Verwandte Themen