Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - SqlError
MBaier - Mo 26.03.12 17:58
Titel: SqlError
Hallo zusammen,
ich habe folgendes Problem und zwar habe ich das Event
C#-Quelltext
1:
| MySqlConnection.InfoMessage += new SqlInfoMessageEventHandler(conn_InfoMessage); |
registriert.
Dieses wird aufgerufen wenn der SQL Server eine Warn oder Infomeldung ausgibt.
Nun soll doch bitte wenn das folgende Event aufgerufen wird, anhand der State-Eigenschaft überprüft werden, ob der Eintrag ein Fehler, eine Warnmeldung oder Sonstiges ist.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| void conn_InfoMessage(object sender, SqlInfoMessageEventArgs e) { for (int i = 0; i < e.Errors.Count - 1; i++) { if (e.Errors[i].State > ??) { } } } |
Bei Google finde ich keine Beispiele für die State-Eigenschaft, bzw welcher Wert für was steht? ..
Mfg Michael
Moderiert von
Th69: C#-Tags hinzugefügt
Ralf Jansen - Mo 26.03.12 18:57
Wie du selbst sagst wird der Event geworfen wenn es sich um eine Warnung handelt (Severity < 10). Fehler kommen da also nie an. Für die bekommst du eine SqlException.
In SqlError.Class steht die Severity darüber könntest du irgendeine Aussage treffen. Nach meinen dafür halten sind das aber alles Warnungen und es gibt keine genauere Unterscheidung als das das alles Warnungen sind. Sehe also da keinen Grund für eine weitere Untersuchung der SqlErrors.
MBaier - Mo 26.03.12 19:05
Ahhh vielen Dank!
Sehe ich das richtig, dass wenn ich die Eigenschaft
C#-Quelltext
1:
| MySqlConnection.FireInfoMessageEventOnUserErrors = true; |
auf true setze, in dem Event auch neben Warnungen Fehler behandelt werden?#
Edit:
..Oder gibt es ein anderes Event,das aufgerufen wird, wenn ein SqlError bei der Verarbeitung auftritt?
Moderiert von
Th69: C#-Tags hinzugefügt
Th69 - Mo 26.03.12 19:38
Hallo,
ich verstehe diese Eigenschaft so, daß dann zwar alle Fehler als InfoMessage ausgegeben werden, jedoch nur bei User-Fehlern (d.h. bis Schweregrad <= 16) wird dann keine Exception zusätzlich geworfen.
Bei echten Fehlern (>= 17) wird aber immer eine Exception geworfen, welche man dann sinnvollerweise behandeln sollte.
Ralf Jansen - Mo 26.03.12 20:09
| Zitat: |
Edit:
..Oder gibt es ein anderes Event,das aufgerufen wird, wenn ein SqlError bei der Verarbeitung auftritt? |
Warum willst du das? Fehler -> Exception. So verhält sich so ziemlich jedes System und man kann da mit den üblichen Fehlerbehandlungsstrategien dran. Warum hier was anderes?
MBaier - Mi 28.03.12 09:19
Vielen Dank für eure Antworten.
Ich führe einen DBCC DBCHECK aus.
Da keine Datensätze, sondern nur InfoMessages und eventl. Fehler zurückgeliefert werden, Möchte ich diese Auflisten.
Wenn eine Fehler auftritt, soll nochmal ein DBCHECK mit Reparatur ausgeführen werden.
Dazu muss ich aber erstmal durch DBCHECK prüfen ob die Datenbank OK ist.
Das heißt wenn ein Fehler auftritt, dann war der Check sowieso nicht erfolgreich und die Rep. wird ausgeführt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!