Použitie SKÚSENIA / ZACHYTENIA na spracovanie chýb servera SQL

click fraud protection

Príkaz TRY / CATCH v Transact-SQL detekuje a spracováva chybové stavy v databázových aplikáciách. Toto vyhlásenie je základným kameňom SQL Spracovanie chýb servera a je dôležitou súčasťou vývoja robustných databázových aplikácií.

VYSKÚŠAŤ / ZACHYŤAŤ sa vzťahuje na SQL Server počnúc rokom 2008, Azure SQL Database, Azure SQL Data Warehouse a Parallel Data Warehouse.

Predstavujeme TRY / CATCH

TRY./CATCH funguje zadaním dvoch príkazov Transact-SQL: jedného, ​​ktorý chcete "vyskúšať" a druhého, ktorý sa použije na "zachytenie" akýchkoľvek chýb, ktoré by sa mohli vyskytnúť. Keď SQL Server narazí na príkaz TRY / CATCH, okamžite vykoná príkaz zahrnutý v klauzule TRY. Ak sa príkaz TRY vykoná úspešne, server SQL prejde ďalej. Ak však príkaz TRY vygeneruje chybu, SQL Server vykoná príkaz CATCH, aby chybu elegantne spracoval.

Základná syntax má túto formu:

ZAČAŤ VYSKÚŠAŤ
{sql_statement | blok výpisov}
UKONČIŤ SKÚŠKU
ZAČÍNAME ÚLOVOK
[{sql_statement | statement_block}]
KONIEC ÚLOVKU
[; ]

SKÚŠKA / ÚLOVOK Príklad

instagram viewer

Zvážte databázu ľudských zdrojov, ktorá obsahuje tabuľku s názvom zamestnancov, ktorá obsahuje informácie o každom zo zamestnancov spoločnosti. Táto tabuľka používa celé číslo ID zamestnanca ako primárny kľúč.

Môžete sa pokúsiť použiť nižšie uvedené vyhlásenie na vloženie nového zamestnanca do vašej databázy:

VLOŽTE DO ZAMESTNANCOV (id, meno, priezvisko, rozšírenie)
HODNOTY (12497, „Mike“, „Chapple“, 4201)

Za normálnych okolností by toto vyhlásenie pridalo riadok do tabuľky Zamestnanci. Ak však zamestnanec s ID 12497 už v databáze existuje, vloženie riadku by porušilo obmedzenie primárneho kľúča a malo by za následok nasledujúcu chybu:

Správa 2627, úroveň 14, štát 1, riadok 1
Porušenie obmedzenia PRIMARY KEY „PK_employee_id“. Nie je možné vložiť duplicitný kľúč do objektu 'dbo.employees'.
Vyhlásenie bolo ukončené.

Aj keď táto chyba poskytuje informácie, ktoré potrebujete na odstránenie problému, sú s ním dva problémy. Po prvé, správa je tajomná. Zahŕňa chybové kódy, čísla liniek a ďalšie informácie, ktoré sú pre priemerného používateľa nepochopiteľné. Po druhé, a čo je dôležitejšie, spôsobuje prerušenie príkazu a môže spôsobiť zlyhanie aplikácie.

Alternatívou je zabalenie príkazu do príkazu SKÚŠAŤ... ÚLOVKU, ako je to zobrazené tu:

ZAČAŤ VYSKÚŠAŤ
VLOŽTE DO ZAMESTNANCOV (id, meno, priezvisko, rozšírenie)
HODNOTY (12497, „Mike“, „Chapple“, 4201)
UKONČIŤ SKÚŠKU
ZAČÍNAME ÚLOVOK
TLAČ 'ERROR:' + ERROR_MESSAGE ();
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Mail zamestnanca',
@recipients = '[email protected]',
@body = 'Pri vytváraní nového záznamu zamestnanca sa vyskytla chyba.',
@subject = 'Chyba databázy zamestnancov';
KONIEC ÚLOVKU

V tomto príklade sú všetky chyby, ktoré sa vyskytnú, hlásené používateľovi, ktorý vykonáva príkaz, aj e-mailovej adrese [email protected]. Chyba zobrazená používateľovi je:

Chyba: Porušenie obmedzenia PRIMARY KEY „PK_employee_id“. 
Nie je možné vložiť duplicitný kľúč do objektu 'dbo.employees'.
Pošta bola zaradená do poradia.

Vykonávanie aplikácie pokračuje normálne, čo umožňuje programátorovi spracovať chybu. Použitie príkazu SKÚŠAŤ / ÚCHOVU je elegantným spôsobom, ako proaktívne zistiť a spracovať chyby, ktoré sa vyskytujú v databázových aplikáciách servera SQL Server.

Dozvedieť sa viac

Ak sa chcete dozvedieť viac informácií o jazyku štruktúrovaných dotazov, prečítajte si náš článok Základy SQL.

instagram story viewer