Warnung und Schweregrad

13/04/2010 - 17:41 von Joachim Hofmann | Report spam
Hallo,

ich erstelle das erste mal eine Warnung.
Die Warnung soll für ein Problem in der reinen Geschàftslogik stehen: ("Kreditorische Vorlaufnummer
konnte nicht erzeugt werden.)"
Welchen Schweregrad gebe ich solch einer Art von Warnung am geschicktesten?
Gibt es sonst noch etwas zu bedenken beim Erzeugen solch einer Warnung (bezgl. RAISERROR oder anderes)?

Danke

Joachim

[SQL 2008]
 

Lesen sie die antworten

#1 Christoph Muthmann
14/04/2010 - 08:36 | Warnen spam
Joachim Hofmann wrote:
Hallo,

ich erstelle das erste mal eine Warnung.
Die Warnung soll für ein Problem in der reinen Geschàftslogik stehen:
("Kreditorische Vorlaufnummer konnte nicht erzeugt werden.)"
Welchen Schweregrad gebe ich solch einer Art von Warnung am
geschicktesten? Gibt es sonst noch etwas zu bedenken beim Erzeugen solch
einer
Warnung (bezgl. RAISERROR oder anderes)?



Hallo Joachim,
das hàngt auch sehr davon ab, was Du mit der Warnung erreichen willst.

Ich verwende oft auch RAISERROR um Fehler im Log des Servers zu
protokollieren und ggf. mit einem Alert darauf zu reagieren.
Schweregrade ab 19 können nur von sysadmins ausgelöst werden und haben
meiner Meinung nach in Anwendungen auch nichts zu suchen.
Aus der Doku:
Schweregrade von 0 bis 18 können von jedem Benutzer angegeben werden.
Schweregrade von 19 bis 25 können nur von Mitgliedern der festen Serverrolle
sysadmin oder Benutzern mit ALTER TRACE-Berechtigungen angegeben werden. Für
Schweregrade von 19 bis 25 ist die Option WITH LOG erforderlich.

Du kannst natürlich auch Messages anlegen und diese dann verwenden. Mache
ich auch, habe aber festgestellt, dass einige Fremdanbieter sich ebenfalls
direkt bei den Nummern 50.001 ff. bedient haben. Lasse also hier am besten
eine Lücke.
Siehe hierzu auch sp_addmessage und sp_add_alert.

Bei mir làuft es in der Regel auf Anweisungen im folgenden Muster hinaus:
RaisError(@Fehlertext, 14, 1)
RAISERROR(60000, 10, 10, @filename1, @stored_size_MB, @current_size_MB) with
log
wobei 60000 meine definierte Message angibt, die Felder danach sind die
Parameter der Meldung

Hierbei setze ich den Schweregrad mehr gefühlsmàssig. Im letzten Beispiel
geht es eher darum Informationen zu protokollieren, ist also kein Fehler,
soll aber protokolliert werden.

Einen schönen Tag noch,
Christoph
Microsoft SQL Server MVP
http://www.insidesql.org

Ähnliche fragen