Utilizarea RAISERROR cu margine pentru a Arunca un SQL Server Eroare de Sistem

posted in: Articles | 0

ARUNCA înlocuiește RAISERROR în SQL Server și este metoda preferată pentru a merge înainte de a ridica mesajele de eroare și împingeți-le la codul de asteptare. Arunca este de fapt mult mai intuitiv decât RAISERROR în ceea ce privește modul în care codul răspunde la ea.

arunca a fost creat ca un mijloc de a se potrivi mai îndeaproape codul de eroare de manipulare în limbajele de programare curente. RAISERROR a fost în jur de la 1998, lansat pentru prima dată în SQL Server 7.0., Aruncarea a fost inclusă pentru prima dată în SQL Server 2012.

RAISERROR este încă inclus în versiunile curente ale SQL Server, dar există diferențe notabile între modul SQL fluxurile când RAISERROR este numit vs. când este numit. Mai exact, RAISERROR nu oprește executarea procedurii curente, în timp ce THROW oprește întotdeauna procedura curentă și trece eroarea până la procedura de apelare.

THROW like RAISERROR vă permite să” ridicați ” Erorile personalizate, dar oprește imediat procesul curent și returnează eroarea la procedura de apelare.,

arunca vă permite să faceți destul de mult tot ceea ce RAISERROR permis, cu o excepție notabilă: arunca nu vă permite să ridice erorile de sistem SQL Server. Dar dacă trebuie să aruncați o eroare de sistem, o puteți face mai întâi folosind RAISERROR într-un bloc de încercare și folosind arunca în blocul de captură corespunzător pentru a arunca eroarea de sistem.

exemplu:

–următoarea declarație are ca rezultat o eroare, deoarece arunca nu poate arunca excepții de sistem:
Arunca 40655, ” baza de date master nu poate fi restabilită.,’, 1;

rezultate:

Msg 35100, nivelul 16, Starea 10, Linia 2
Numărul de eroare 40655 din instrucțiunea de aruncare este în afara intervalului valid. Specificați un număr de eroare în intervalul Valabil de la 50000 la 2147483647.dar puteți rezolva această limitare a aruncării de a nu putea arunca excepții de sistem folosind-o împreună cu RAISERROR într–un bloc de încercare/captură:

– excepție de sistem de aruncare folosind RAISERROR mai întâi într-un bloc de încercare/captură.,
BEGIN ÎNCERCA
PRINT ‘Begin’Incearca;
RAISERROR (40655, 16, 1);
PRINT ‘End Încerca’;
END ÎNCERCA

BEGIN PRINDE
PRINT ‘Începe a Prinde / Înainte de a Arunca Eroare’;
ARUNCA;
PRINT ‘End Prinde / După ce a Aruncat Eroare’;
END PRINDE;

PRINT ‘După Try/Catch’;

REZULTATE:

Begin Încerca
Begin Prinde / Înainte de a Arunca Eroare
Msg 40655, Nivel 16, Stat 1, Linia 3
baza de Date „maestru” nu poate fi restaurat.,

după Cum puteți vedea în rezultatele, RAISERROR nu se oprește fluxul de proces, dar nu permite de a ridica erori de sistem și nu ARUNCA opri fluxul de proces și vă permite să arunce erori de sistem ai ridica cu RAISERROR la procesul de asteptare. Utilizarea celor două declarații împreună vă permite să aveți control complet asupra mesajelor de eroare și atunci când acestea sunt returnate la procedura de apelare.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *