SQL Server Raiserror -Anweisung

SQL Server Raiserror -Anweisung
Mit der Raiserror-Anweisung in SQL Server können Sie benutzerdefinierte Fehlermeldungen generieren und anzeigen.

Mit der Raiserror-Anweisung können Sie benutzerdefinierte Meldungen erstellen und in Ihren Anwendungen anzeigen. Die von der Raiserror-Anweisung generierten Fehlermeldungen verwenden das gleiche Format wie systemgenerierte Nachrichten.

Sie können auch verschiedene Parameter wie Schweregrad und den Status der Nachrichten definieren.

Die Syntax der Raiserror -Erklärung ist wie unten gezeigt:

RAISERROR (message_id | message_content | @local_variable
Schweregrad, Zustand
Mit Option
);

Lassen Sie uns die Syntax der RaiseRror -Erklärung aufschlüsseln:

  1. Message_id - Die Message_ID bezieht.Nachrichten Katalogansicht. Dieser Wert sollte über 50.000 liegen.
  2. Message_Content - Dies ist der tatsächliche Inhalt der Fehlermeldung. Die Nachricht kann bis zu 2.047 Zeichen enthalten. Wenn die Fehlermeldung diesen Wert überschreitet. Das Format der Nachricht ähnelt der der Printf -Funktion in der C -Programmierung.
  3. @Local_Variable - Jede Variable eines beliebigen Zeichentyps, der eine in einem identischen Stil formatierte Zeichenfolge als message_content hält.
  4. Schweregrad - Definiert die Schweregradniveau der Nachricht, die durch die RaiseRror -Erklärung gezeigt wird. Dies ist ein ganzzahliger Wert zwischen 0 und 25, wobei jeder Wert auf ein hohes Schweregrad anzeigt. Denken Sie daran, dass jeder Schweregrad zwischen 20 und 25 als tödlich behandelt wird. Wenn ein fataler Fehler empfangen wird, beendet SQL Server die Verbindung des Clients und protokolliert die Fehlermeldung. Um ein Schweregrad von über 18 festzulegen, müssen Sie die Spurenberechtigungen ändern und Mitglied der Sysadmin -Rolle sein.
  5. Zustand - Dies ist ein ganzzahliger Wert, der zwischen 0 und 255 liegt. Zustände können dazu beitragen, den spezifischen Abschnitt zu identifizieren, der die Fehler erhöht.
  6. Mit Option - dieser Parameter wird verwendet, um zu ändern, wie die RAISError -Anweisung funktioniert. Die akzeptierten Optionen umfassen:
    1. Mit Protokoll - Zeigt die Nachricht an den Benutzer an und protokolliert den Fehler in den Fehlerprotokollen.
    2. Mit SetError - Legt automatisch die Fehler -Werte für ERROR_NUMBER und @@ Fehler auf message_id fest, wodurch die angegebene Fehlerebene nicht berücksichtigt wird.
    3. Mit nowit - zeigt die Fehlermeldung sofort an den Client an.

Hinweis: Wenn kein Wert für den Parameter von message_id definiert ist, gibt die Raiserror -Anweisung einen Fehler mit einer ID von 50.000 zurück. Stellen Sie daher sicher, dass alle Ihre Message_ids über diesem Wert liegen.

Hinweis: Die durch das SP_ADDMessage -Prozedur definierte Schweregradniveau wird durch die durch die Raiseerror -Anweisung definierte.

Erstellen Sie Ad -hoc -Nachrichten mit der SP_ADDMessage -Prozedur

So fügen Sie dem SYS eine Fehlermeldung hinzu.Meldungen Katalogansicht, verwenden Sie die SP_ADDMessage -Prozedur, wie im folgenden Beispiel gezeigt:

EXEC SP_ADDMESSAGE
@msgnum = 50001,
@Severity = 10,
@msgText = '[Fehler]… Dies ist ein Testfehler. Mess'ge';

Um die Nachricht in der Katalogansicht anzuzeigen:

Wählen Sie * aus SYS aus.Nachrichten, wobei Message_id = 50001;

Die Abfrage sollte wie gezeigt zurückkehren:

Verwenden Sie zum Ausführen der Nachricht die RaiseRror -Anweisung wie gezeigt:

RAISEERROR (50001,10,1);

Die Abfrage sollte zurückkehren:

[Fehler]… Dies ist eine Testfehlermeldung

Um eine Nachricht aus dem SYS zu löschen.Meldungen Katalogansicht, verwenden Sie die sp_dropMessage wie gezeigt:

Exec sp_dropMessage @msgnum = 50001;

RAISEERROR -Erklärung im Try/Catch -Block

Wir können die RaiseRror -Anweisung verwenden, um einen Fehler in einen Try/Catch -Block zu werfen, wie in der folgenden Beispielabfrage gezeigt:

Beginnen Sie versuchen
RAISEERROR ('Fehler im Try -Block', 15, 1);
Ende versuchen
Fangen Sie an
Declare @errormsg nvarchar (4000);
Declare @severity int;
Deklarieren @e_state int;
WÄHLEN
@errormsg = error_message (),
@Schweregrad = ERROR_SEVERITY (),
@e_state = error_state ();
RAISERROR (@errormsg, @Severity, @E_State);
Ende Fang

Wenn wir die Abfrage ausführen, sollten wir die folgende Fehlermeldung sehen:

MSG 50000, Stufe 15, Zustand 1, Zeile 12
Fehler im Try -Block

Abschluss

In diesem Artikel haben Sie erfahren. Dies beinhaltet das Erstellen von Ad -hoc -Nachrichten mit der SP_ADDMessage -Prozedur und die Verwendung der Raiserror -Anweisung im Try/Catch -Block. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Informationen finden Sie in anderen Linux -Hinweisartikeln.