Torna a: SQL Server Tutorial Per Principianti e Professionisti
Come Aumentare Errori Esplicitamente in SQL Server
In questo articolo, Sto a discutere come alzare errori esplicitamente in SQL Server con alcuni esempi insieme potremo anche discutere le diverse opzioni che si possono utilizzare con Raiserror in SQL Server., Si prega di leggere il nostro precedente articolo in cui abbiamo discusso l’esempio in tempo reale della funzione di sistema di errore Raise. Come parte di questo articolo, ci accingiamo a discutere i seguenti puntatori.
- Come generare errori in modo esplicito in SQL Server?
- Raise error using RAISERROR statement in SQL Server
- Raise Error using throw statement in SQL Server
- Qual è la differenza tra la funzione RAISERROR e l’istruzione throw?
- Comprensione dell’istruzione RaiseError con l’opzione Log.
- Come generare errori memorizzando il messaggio di errore nella tabella SysMessage.,
Come generare errori in modo esplicito in SQL Server?
Generalmente, errori generati in un programma su motivi predefiniti come dividere un numero per zero, violazione della chiave primaria, violazione del controllo, violazione dell’integrità referenziale, ecc. Ma se vogliamo, possiamo anche generare un errore nei tuoi programmi in due modi diversi.,
- istruzione Raiserror
- istruzione throw (nuove funzionalità di SQL Server 2012)
Raiserror Sintassi: Raiserror (errorid/errormsg, la GRAVITÀ dello stato)
gettare Sintassi: Gettare errorid, errormsg, stato
Esempio: Alzare errore utilizzando l’istruzione RAISERROR in SQL Server.
Nella seguente stored Procedure, generiamo un errore quando la divisione è 1 utilizzando l’istruzione RAISERROR.,
Esempio di esecuzione: EXEC spDivideBy1 10, 1
Esempio: Sollevare Errore utilizzando l’istruzione throw in SQL Server.
La procedura di cui sopra può anche essere riscritta con l’aiuto di un’istruzione throw al posto di Raiserror come segue.,
EXECUTION: EXEC spDivideBy2 10, 1
Qual è la differenza tra la funzione RAISERROR e l’istruzione throw?
Se usiamo una qualsiasi delle due istruzioni in un programma per generare un errore senza blocchi try and catch, l’istruzione RAISERROR dopo aver sollevato l’errore continuerà comunque l’esecuzione del programma mentre l’istruzione throw terminerà il programma in modo anomalo su quella riga., Ma se vengono utilizzati sotto try block, entrambi si comporteranno nello stesso modo in cui salteranno direttamente per catturare il blocco da dove è stato generato l’errore.
L’istruzione RAISERROR darà la possibilità di specificare la GRAVITÀ del messaggio di errore mentre non abbiamo questa opzione in caso di istruzione throw in cui tutti i messaggi di errore avranno una gravità predefinita di 16.,
In caso di RAISERROR, c’è la possibilità di registrare il messaggio di errore nel file di log del server usando l’opzione with log mentre non possiamo farlo in caso di un’istruzione throw.
In caso di throw, dobbiamo specificare sia l’errorid che il messaggio di errore per generare l’errore mentre in caso di RAISERROR possiamo specificare id o messaggio., Se l’id non è specificato l’id errore predefinito è 50000 ma se vogliamo specificare solo l’ID errore prima dobbiamo aggiungere il messaggio di errore nella tabella sysmessage specificando un ID univoco alla tabella.
OPZIONI CON L’ISTRUZIONE RAISERROR:
Con Log: Utilizzando questa opzione nell’istruzione RAISERROR possiamo registrare il messaggio di errore nel file di log di SQL Server in modo che se gli errori sono fatali l’amministratore del database possa occuparsi di correggere tali errori.,
Se la gravità dell’errore è maggiore di 20 specificare l’opzione With Log è obbligatoria. Per testare questa modifica la procedura spDivideBy1 modificando l’istruzione raiserror come segue
RAISERROR (‘DIVISORE NON può ESSERE UNO’, 16, 1) CON LOG
di Seguito è la procedura completa
Ora eseguire la procedura e ogni volta che il dato errore solleva siamo in grado di guardare i messaggi di errore registrati in file di log SQL Server. Per visualizzare il file di registro., In object explorer, andare al nodo di gestione SQL Server log node e aprire il file di registro corrente facendo doppio clic su di esso come mostrato di seguito.,g
RAISERROR (‘IL NUMERO %d NON può ESSERE DIVISO DA %d’,16, 1, @No1, @No2)CON LOG
Alzando gli Errori di memorizzare il messaggio di Errore in SysMessage tabella:
Siamo in grado di sollevare un errore, senza dare il messaggio di errore in istruzione RAISERROR ma al posto del messaggio di errore abbiamo bisogno di specificare l’id di errore e di specificare l’id dell’errore abbiamo bisogno di registrare l’id di errore con il messaggio di errore in SysMessage tabella utilizzando il sistema di procedura definita “SP_ADDMESSAGE”., 16, ‘DIVIDERE per UN ERRORE’
Ora modifica la procedura modificando l’istruzione RAISERROR come segue
RAISERROR (51000,16, 1)CON LOG
Eliminazione di messaggi di errore da sysmessages tabella:
Sintassi: SP_DROPMESSAGE <errore id>
Esempio: EXEC sp_dropMessage 51000
Nel prossimo articolo, ho intenzione di discutere il try-catch implementazione in SQL Server per gestire l’errore in SQL Server., Qui, in questo articolo, cerco di spiegare Come generare errori in modo esplicito in SQL Server passo dopo passo con alcuni esempi.