Žingsnis po žingsnio vadovas, kaip naudoti TRY/CATCH SQL serverio klaidoms valdyti
Nustatykite klaidas nenutraukdami vykdymo

Larry Washburn / Getty Images
TRY/CATCH sakinys Transact-SQL aptinka ir tvarko klaidų sąlygas duomenų bazės programose. Šis teiginys yra kertinis akmuo SQL Serverio klaidų tvarkymas ir yra svarbi patikimų duomenų bazių programų kūrimo dalis.
TRY/CATCH taikoma SQL serveriui, pradedant nuo 2008 m., „Azure SQL Database“, „Azure SQL Data Warehouse“ ir „Parallel Data Warehouse“.
Pristatome TRY/CATCH
TRY./CATCH veikia nurodant du „Transact-SQL“ teiginius: vieną, kurį norite „bandyti“, o kitą naudoti norint „pagauti“ bet kokias klaidas, kurios gali kilti. Kai SQL serveris susiduria su TRY/CATCH sakiniu, jis nedelsdamas vykdo sakinį, įtrauktą į TRY sąlygą. Jei TRY sakinys sėkmingai vykdomas, SQL serveris juda toliau. Tačiau, jei TRY sakinys sugeneruoja klaidą, SQL serveris vykdo CATCH sakinį, kad klaidą ištaisytų grakščiai.
Pagrindinė sintaksė yra tokia:
|_+_|
TRY/CATCH Pavyzdys
Apsvarstykite žmogiškųjų išteklių duomenų bazę, kurioje yra lentelė pavadinimu darbuotojų , kuriame pateikiama informacija apie kiekvieną įmonės darbuotoją. Šioje lentelėje kaip pirminis raktas naudojamas sveikasis darbuotojo ID numeris.
Galite pabandyti naudoti toliau pateiktą teiginį, kad įtrauktumėte naują darbuotoją į savo duomenų bazę:
|_+_| |_+_|Šiame pavyzdyje apie visas įvykusias klaidas pranešama ir komandą vykdančiam vartotojui, ir hr@foo.com el. pašto adresui. Vartotojui rodoma klaida:
PRADĖKITE BANDYTI
INSERT INTO darbuotojai (id, vardas, pavardė, plėtinys)
VALUES(12497, 'Mike'as', 'Chapple', 4201)END TRYBEGIN CATCHPRINT 'KLAIDA: ' + ERROR_MESSAGE( );EXEC msdb.dbo.sp_send_dbmail@profile_name = 'Darbuotojo paštas' =.com@recipai ,@body = 'Įvyko klaida kuriant naują darbuotojo įrašą.',@subject = 'Darbuotojų duomenų bazės klaida' ;END CATCH
Programos vykdymas tęsiamas įprastai, todėl programuotojas gali išspręsti klaidą. TRY/CATCH teiginio naudojimas yra elegantiškas būdas aktyviai aptikti ir tvarkyti klaidas, atsirandančias SQL serverio duomenų bazės programose.
Sužinokite daugiau
Norėdami sužinoti daugiau apie struktūrinės užklausos kalbą, peržiūrėkite mūsų straipsnį SQL pagrindai .