Înapoi la: SQL Server Tutorial Pentru Începători și Profesioniști
Cum de A Ridica Erori în mod Explicit în SQL Server
În acest articol, Am de gând să discute cum să ridice erori în mod explicit în SQL Server cu niste exemple de-a lungul cu o vom discuta, de asemenea, diferite opțiuni pe care le puteți utiliza cu Raiserror în SQL Server., Vă rugăm să citiți articolul nostru anterior în care am discutat exemplul în timp real al funcției Raise Error system. Ca parte a acestui articol, vom discuta următoarele indicii.
- Cum de a ridica erorile în mod explicit în SQL Server?
- Ridica de eroare folosind RAISERROR declarație în SQL Server
- Ridica de Eroare folosind arunca declarație în SQL Server
- care este diferența dintre RAISERROR funcție și arunca declarație?
- înțelegerea enunțului RaiseError cu opțiunea Log.
- Cum de a ridica erori prin stocarea mesajului de eroare în tabelul SysMessage.,
Cum de a ridica erorile în mod explicit în SQL Server?
în general, erorile ridicate într-un program din motive predefinite, cum ar fi împărțirea unui număr la zero, încălcarea cheii primare, încălcarea verificării, încălcarea integrității referențiale etc. Dar dacă vrem, atunci putem ridica, de asemenea, o eroare în programele dvs. în două moduri diferite.,
- Raiserror declarație
- arunca declarație (caracteristică nouă de SQL Server 2012)
Raiserror Sintaxa: Raiserror (errorid/errormsg, SEVERITATE, de stat)
arunca Sintaxa: Arunca errorid, errormsg, de stat
Exemplu: Ridica eroare folosind RAISERROR declarație în SQL Server.
în următoarea procedură stocată, ridicăm o eroare atunci când diviziunea este 1 folosind instrucțiunea RAISERROR.,
Exemplu de executie: EXEC spDivideBy1 10, 1
Exemplu: Ridica Eroare folosind arunca declarație în SQL Server.
procedura De mai sus poate fi rescris cu ajutorul unui arunca declarație, în loc de Raiserror după cum urmează.,
EXECUTIE: EXEC spDivideBy2 10, 1
care este diferența dintre RAISERROR funcție și arunca declarație?
Dacă vom folosi oricare din cele două declarații într-un program pentru a ridica o eroare, fără a încerca și prinde blocuri, RAISERROR declarație după creșterea de eroare va continua execuția programului întrucât arunca declarație va termina programul anormal de pe acea linie., Dar, în cazul în care acestea sunt utilizate sub încercați bloc ambele se vor comporta în același mod în care este va sari direct pentru a prinde bloc de unde eroarea a fost ridicată.
La RAISERROR declarație va oferi o opțiune de a preciza GRAVITATEA mesaj de eroare întrucât nu avem această opțiune în cazul arunca declarație în cazul în care toate mesajele de eroare vor fi implicit SEVERITATEA 16.,
În caz de RAISERROR, acolo este o șansă de a înregistra un mesaj de eroare în fișierul jurnal server prin utilizarea cu log opțiune întrucât nu putem face acest lucru în cazul în care o arunca declarație.
În caz de aruncare, avem nevoie pentru a specifica atât errorid și un mesaj de eroare pentru a ridica eroare întrucât în caz de RAISERROR putem specifica nici id-ul sau un mesaj., Dacă id-ul nu este specificat ID-ul de eroare implicit este 50000, dar dacă dorim să specificăm doar ID-ul de eroare mai întâi trebuie să adăugăm mesajul de eroare în tabelul sysmessage specificând un id unic în tabel.
OPȚIUNI CU RAISERROR DECLARAȚIE:
Cu Log: utilizând această opțiune în RAISERROR declarație putem înregistra un mesaj de eroare în jurnalul de SQL Server de fișiere, astfel încât dacă aceste erori sunt fatale administratorul bazei de date poate ocupa de repararea acestor erori.,
dacă severitatea erorii este mai mare de 20 specificarea opțiunii cu jurnal este obligatorie. Pentru a testa acest MODIFICA procedura spDivideBy1 prin schimbarea raiserror declarație după cum urmează
RAISERROR (‘DIVIZOR nu POATE FI UNUL’, 16, 1) CU LOG
mai Jos este procedura completă,
Acum executa procedura și ori de câte ori a dat eroare ridică putem viziona mesaje de eroare înregistrate în jurnal SQL Server de fișiere. Pentru a vizualiza fișierul jurnal., În object explorer, accesați nodul de gestionare SQL Server log node și deschideți fișierul jurnal curent făcând dublu clic pe el, așa cum se arată mai jos.,g
RAISERROR (‘NUMARUL %d nu POATE FI ÎMPĂRȚITĂ %d’,16, 1, @1, @No2)CU LOG
Creșterea Erori De stocarea mesaj de Eroare în SysMessage tabel:
putem ridica o eroare, fără a da un mesaj de eroare în RAISERROR declarație, dar în loc de mesajul de eroare trebuie să specificați id eroare și pentru a specifica id eroare de care avem nevoie pentru a înregistra acea eroare cu id-ul mesaj de eroare în SysMessage masă prin folosirea sistemului de proceduri definite „SP_ADDMESSAGE”., 16, ‘ÎMPĂRȚIȚI DE O EROARE a ÎNTÂLNIT
Acum modifica procedura prin schimbarea RAISERROR declarație după cum urmează
RAISERROR (51000,16, 1)CU LOG
Ștergere mesaje de eroare de sysmessages tabel:
Sintaxa: SP_DROPMESSAGE <eroare id-ul>
Exemplu: EXEC sp_dropMessage 51000
În următorul articol, voi discuta despre try-catch punerea în aplicare în SQL Server pentru a gestiona eroarea în SQL Server., Aici, în acest articol, încerc să explic cum să ridic Erorile Explicit în SQL Server pas cu pas cu câteva exemple.