Internet

Een stapsgewijze handleiding voor het gebruik van TRY / CATCH om SQL Server-fouten af ​​te handelen

Schrijver: Laura McKinney
Datum Van Creatie: 2 April 2021
Updatedatum: 14 Kunnen 2024
Anonim
Een stapsgewijze handleiding voor het gebruik van TRY / CATCH om SQL Server-fouten af ​​te handelen - Internet
Een stapsgewijze handleiding voor het gebruik van TRY / CATCH om SQL Server-fouten af ​​te handelen - Internet

Inhoud

Identificeer fouten zonder de uitvoering te onderbreken

De TRY / CATCH-instructie in Transact-SQL detecteert en behandelt foutcondities in databasetoepassingen. Deze verklaring is de hoeksteen van de foutafhandeling van SQL Server en is een belangrijk onderdeel van de ontwikkeling van robuuste database-applicaties.

TRY / CATCH is van toepassing op SQL Server vanaf 2008, Azure SQL Database, Azure SQL Data Warehouse en Parallel Data Warehouse.

Introductie van TRY / CATCH

TRY./CATCH werkt door twee Transact-SQL-instructies op te geven: één die u wilt "proberen" en een andere om eventuele fouten te "vangen". Wanneer SQL Server een TRY / CATCH-instructie tegenkomt, wordt de instructie in de TRY-clausule onmiddellijk uitgevoerd. Als de TRY-instructie met succes wordt uitgevoerd, gaat SQL Server verder. Als de TRY-instructie echter een fout genereert, voert SQL Server de CATCH-instructie uit om de fout netjes af te handelen.


De basissyntaxis heeft deze vorm:

BEGIN PROBEREN
sql_statement
EINDE PROBEER
BEGIN VANGST
[sql_statement]
EINDE VANGST
[ ; ]

PROBEER / VANGST Voorbeeld

Overweeg een human resources-database met een tabel met de naam medewerkers, die informatie bevat over elk van de werknemers in een bedrijf. Die tabel gebruikt een integer ID-nummer van de werknemer als primaire sleutel.

U kunt proberen de onderstaande verklaring te gebruiken om een ​​nieuwe werknemer in uw database in te voegen:

INSERT INTO werknemers (id, voornaam, achternaam, extensie)
WAARDEN (12497, 'Mike', 'Chapple', 4201)

Onder normale omstandigheden zou deze verklaring een rij toevoegen aan de tabel Werknemers. Als er echter al een werknemer met ID 12497 in de database bestaat, zou het invoegen van de rij de beperking van de primaire sleutel schenden en de volgende fout opleveren:

Msg 2627, niveau 14, staat 1, regel 1
Schending van de PRIMARY KEY-beperking 'PK_employee_id'. Kan geen dubbele sleutel invoegen in object 'dbo.medewerkers'.
De verklaring is beëindigd.

Hoewel deze fout u de informatie geeft die u nodig hebt om het probleem op te lossen, zijn er twee problemen mee. Ten eerste is de boodschap cryptisch. Het bevat foutcodes, regelnummers en andere informatie die voor de gemiddelde gebruiker niet te begrijpen is. Ten tweede, en nog belangrijker, wordt de instructie afgebroken en kan een toepassingscrash worden veroorzaakt.


Het alternatief is om de instructie in een TRY… CATCH-instructie in te pakken, zoals hier wordt weergegeven:

BEGIN PROBEREN
INSERT INTO werknemers (id, voornaam, achternaam, extensie)
WAARDEN (12497, 'Mike', 'Chapple', 4201)
EINDE PROBEER
BEGIN VANGST
'FOUT:' + ERROR_MESSAGE () AFDRUKKEN;
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Werknemersmail',
@recipients = '[email protected]',
@body = 'Er is een fout opgetreden bij het maken van een nieuw werknemersrecord.',
@subject = 'Fout met database van werknemer';
EINDE VANGST

In dit voorbeeld worden eventuele fouten gerapporteerd aan zowel de gebruiker die de opdracht uitvoert als aan het e-mailadres [email protected]. De fout die aan de gebruiker wordt getoond, is:

Fout: schending van de PRIMARY KEY-beperking 'PK_employee_id'.
Kan geen dubbele sleutel invoegen in object 'dbo.medewerkers'.
Mail staat in de wachtrij.

De uitvoering van de applicatie gaat normaal door, waardoor de programmeur de fout kan afhandelen. Het gebruik van de TRY / CATCH-instructie is een elegante manier om proactief fouten te detecteren en af ​​te handelen die optreden in SQL Server-databasetoepassingen.



Meer leren

Raadpleeg ons artikel Inleiding tot SQL voor meer informatie over de Structured Query Language.

Nieuwe Berichten

Interessant Op De Site

Wat is een BAT-bestand?
Software

Wat is een BAT-bestand?

Een betand met de betandextenie .BAT i een batchverwerkingbetand. Het i een gewoon tektbetand dat verchillende opdrachten bevat die worden gebruikt voor repetitieve taken of om groepen cript achter e...
Hoe de standaardbrowser in macOS te veranderen
Tehnologies

Hoe de standaardbrowser in macOS te veranderen

Hoewel Apple' afari een bekende favoriet i onder Mac-gebruiker, i de tandaardbrower van macO verre van de enige game in de tad. Met alternatieven zoal Chrome, Edge en Firefox bechikbaar op het pl...