Istruzione SQL Server Raiserror

Istruzione SQL Server Raiserror
L'istruzione Raiserror in SQL Server consente di generare e visualizzare i messaggi di errore definiti dall'utente.

Utilizzando l'istruzione Raiserror, è possibile creare messaggi di errore personalizzato e visualizzarli nelle applicazioni. I messaggi di errore generati dall'istruzione Raiserror utilizzeranno lo stesso formato dei messaggi generati dal sistema.

Puoi anche definire vari parametri, come la gravità e lo stato dei messaggi.

La sintassi dell'istruzione Raiserror è come mostrato di seguito:

raiserror (message_id | message_content | @local_variable
severità, stato
Con opzione
);

Abbattiamo la sintassi dell'istruzione Raiserror:

  1. Message_id - Il messaggio_id si riferisce a un messaggio di definizione dell'utente che la procedura SP_ADDMessage utilizza per archiviare il messaggio nel SYS.Messaggi Vista del catalogo. Questo valore dovrebbe essere superiore a 50.000.
  2. Message_Content - Questo è il contenuto effettivo del messaggio di errore. Il messaggio può contenere fino a 2.047 caratteri. Se il messaggio di errore supera questo valore, SQL Server visualizzerà solo 2.044 caratteri e quindi aggiungerà ellissi per mostrare il troncamento del messaggio. Il formato del messaggio è simile a quello della funzione printf nella programmazione C.
  3. @local_variable - Qualsiasi variabile di qualsiasi tipo di carattere con una stringa formattata in uno stile identico come Message_Content.
  4. Severità: definisce il livello di gravità del messaggio mostrato dall'istruzione Raiserror. Questo è un valore intero compreso tra 0 e 25, ogni valore che indica un livello di gravità elevato. Tieni presente che qualsiasi valore di gravità tra 20 e 25 è trattato come fatale. Se viene ricevuto un errore fatale, SQL Server termina la connessione del client e registra il messaggio di errore. Per specificare un livello di gravità superiore a 18, è necessario avere le autorizzazioni di alterazione ed essere un membro del ruolo di Sysadmin.
  5. Stato: questo è un valore intero che varia tra 0 e 255. Gli stati possono aiutare a identificare la sezione specifica che aumenta gli errori.
  6. Con l'opzione: questo parametro viene utilizzato per modificare il funzionamento dell'istruzione Raiserror. Le opzioni accettate includono:
    1. Con registro - mostra il messaggio all'utente e registrare l'errore nei registri di errore.
    2. Con Seterror - Imposta automaticamente i valori di errore Error_Number e @@ su Message_ID, ignorando il livello di errore specificato.
    3. Con oggi - mostra il messaggio di errore al client all'istante.

Suggerimento: Se non viene definito alcun valore per il parametro Message_ID, l'istruzione Raiserror restituirà un errore con un ID di 50.000. Quindi, assicurati che tutti i tuoi messaggi siano al di sopra di questo valore.

Suggerimento: Il livello di gravità definito dalla procedura SP_ADDMessage è sovrascritto da quello definito dall'istruzione Raiserror.

Crea messaggi ad hoc con la procedura SP_ADDMessage

Per aggiungere manualmente un messaggio di errore al sistema.Visualizzazione del catalogo dei messaggi, utilizzare la procedura SP_ADDMessage come mostrato nell'esempio seguente:

Exec SP_AddMessage
@msgnum = 50001,
@Severity = 10,
@msgtext = '[Errore] ... questo è un errore di test'ge';

Per visualizzare il messaggio nella vista del catalogo:

Seleziona * da sys.messaggi in cui message_id = 50001;

La query dovrebbe tornare come mostrato:

Per eseguire il messaggio, utilizzare l'istruzione Raiserror come mostrato:

raiserror (50001,10,1);

La query dovrebbe tornare:

[Errore] ... questo è un messaggio di errore di prova

Per eliminare un messaggio dal sistema.Visualizzazione del catalogo dei messaggi, utilizzare SP_DropMessage come mostrato:

Exec SP_DropMessage @msgnum = 50001;

Dichiarazione Raiserror nel blocco Try/Catch

Possiamo usare l'istruzione Raiserror per lanciare un errore all'interno di un blocco Try/Catch, come mostrato nella seguente query di esempio:

Inizia prova
raiserror ('errore nel blocco try', 15, 1);
Fine prova
Inizia Catch
Dichiarare @errormsg nvarchar (4000);
Dichiarare @Severity int;
Dichiarare @e_state int;
SELEZIONARE
@errormsg = error_message (),
@severity = error_severity (),
@e_state = error_state ();
raiserror (@errormsg, @severità, @e_state);
Fine Catch

Se eseguiamo la query, dovremmo vedere il seguente messaggio di errore:

MSG 50000, Livello 15, Stato 1, linea 12
Errore nel blocco Try

Conclusione

In questo articolo, hai imparato come utilizzare l'istruzione Raiserror in SQL Server per generare messaggi di errore personalizzato. Ciò include la creazione di messaggi ad hoc con la procedura SP_AddMessage e l'utilizzo dell'istruzione Raiserror nel blocco Try/Catch. Speriamo che tu abbia trovato questo articolo utile. Dai un'occhiata ad altri articoli di suggerimento Linux per ulteriori suggerimenti e informazioni.