Instrukcja SQL Server Raiserror

Instrukcja SQL Server Raiserror
Instrukcja RAISERROR na SQL Server umożliwia generowanie i wyświetlanie komunikatów o błędach zdefiniowanych przez użytkownika.

Korzystając z instrukcji RaisError, możesz tworzyć wiadomości niestandardowe i wyświetlać je w swoich aplikacjach. Komunikaty o błędach wygenerowane przez instrukcję Raiserror będą używać tego samego formatu co komunikaty generowane przez system.

Możesz także zdefiniować różne parametry, takie jak nasilenie i stan wiadomości.

Składnia instrukcji Raiserror jest jak pokazano poniżej:

RAISERROR (Message_id | Message_content | @local_variable
nasilenie, stan
Z opcją
);

Rozbijmy składnię oświadczenia Raiserror:

  1. message_id - Message_id odnosi się do definicji użytkownika Message_id, którego procedura SP_ADDMESSAGE używa do przechowywania wiadomości w SYS.Widok katalogu wiadomości. Ta wartość powinna być powyżej 50 000.
  2. message_content - To jest faktyczna treść komunikatu o błędzie. Wiadomość może zawierać do 2047 znaków. Jeśli komunikat o błędzie przekroczy tę wartość, SQL Server wyświetli tylko 2 044 znak. Format wiadomości jest podobny do formowania funkcji drukowania w programowaniu C.
  3. @local_variable - dowolna zmienna dowolnego typu znakowego zawierającego ciąg sformatowany w identycznym stylu jako Message_Content.
  4. nasilenie - określa poziom nasilenia wiadomości pokazanej przez instrukcję Raiserror. Jest to wartość liczb całkowita od 0 do 25, każda wartość wskazująca wysoki poziom nasilenia. Należy pamiętać, że każda wartość nasilenia między 20 a 25 jest traktowana jako śmiertelna. W przypadku odbierania błędu śmiertelnego serwera SQL kończy połączenie klienta i rejestruje komunikat o błędzie. Aby określić poziom nasilenia powyżej 18, musisz mieć zmianę uprawnień do śledzenia i być członkiem roli sysadmin.
  5. Stan - jest to wartość liczb całkowita, która wynosi od 0 do 255. Stany mogą pomóc zidentyfikować konkretną sekcję podnoszącą błędy.
  6. Z opcją - ten parametr służy do modyfikacji funkcjonowania instrukcji Raiserror. Zaakceptowane opcje obejmują:
    1. Z log - pokazuje komunikat użytkownika i rejestrować błąd w dziennikach błędów.
    2. Z setError - automatycznie ustawia wartości błędów i @@ wartości błędów na message_id, lekceważenie określonego poziomu błędu.
    3. Z NowAit - natychmiast pokazuje komunikat o błędzie dla klienta.

Wskazówka: Jeśli nie zostanie zdefiniowana żadna wartość dla parametru Message_id, instrukcja Raiserror zwróci błąd z identyfikatorem 50 000. Stąd upewnij się, że wszystkie Twoje message_ids są powyżej tej wartości.

Wskazówka: Poziom nasilenia zdefiniowany przez procedurę SP_ADDMessage jest zastąpiony przez ten zdefiniowany przez instrukcję Raiserror.

Utwórz wiadomości ad hoc za pomocą procedury SP_ADDMessage

Aby ręcznie dodać komunikat o błędzie do SYS.Wiadomości Widok katalogu, użyj procedury SP_ADDMESSAGE, jak pokazano w poniższym przykładzie:

Exec sp_addmessage
@MSGNUM = 50001,
@Severity = 10,
@msgtext = '[błąd]… to jest mess'ge błędu testu'ge';

Aby wyświetlić wiadomość w widoku katalogu:

Wybierz * z SYS.Wiadomości, w których message_id = 50001;

Zapytanie powinno powrócić jak pokazano:

Aby uruchomić wiadomość, użyj instrukcji Raiserror, jak pokazano:

Raiserror (50001,10,1);

Zapytanie powinno powrócić:

[Błąd]… To jest komunikat o błędzie testu

Aby usunąć wiadomość z SYS.Widok katalogu komunikatów, użyj SP_DropMessage, jak pokazano:

Exec sp_dropmessage @msgnum = 50001;

Instrukcja Raiserror w bloku try/catch

Możemy użyć instrukcji Raiserror, aby rzucić błąd w bloku try/catch, jak pokazano w następującym przykładzie zapytania:

Zacznij próbować
Raiserror („Błąd w bloku try”, 15, 1);
Koniec spróbuj
Zacznij złapać
Zadeklarować @ERROMSG NVARCHAR (4000);
Deklaruj @Severity Int;
Deklaruj @e_state int;
WYBIERAĆ
@ERRORMSG = ERROR_MESSAGE (),
@surowość = error_severity (),
@e_state = error_state ();
RAISERROR (@ERROMSSG, @Severity, @E_State);
Końcowy haczyk

Jeśli wykonamy zapytanie, powinniśmy zobaczyć następujący komunikat o błędzie:

MSG 50000, poziom 15, stan 1, linia 12
Błąd w bloku próbnym

Wniosek

W tym artykule nauczyłeś się, jak korzystać z instrukcji RAISERROR w SQL Server do generowania wiadomości niestandardowych. Obejmuje to tworzenie komunikatów ad hoc za pomocą procedury SP_ADDMessage i korzystanie z instrukcji Raiserror w bloku try/catch. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź inne artykuły w Linux, aby uzyskać więcej wskazówek i informacji.