Opbouw van fouten en niet-af te vangen fouten

Transacties en foutafhandeling in SQL Server

Miriam Antona

Software Engineer

Opbouw van fouten

INSERT INTO products (product_name, stock, price)
    VALUES ('Trek Powerfly 5 - 2018', 10, 3499.99);
Msg 2627, Level 14, State 1, Line 1
Violation of UNIQUE KEY constraint 'unique_name'. 
Cannot insert duplicate key in object 'dbo.products'. 
The duplicate key value is (Trek Powerfly 5 - 2018).
Transacties en foutafhandeling in SQL Server

Opbouw van fouten

Foutnummer

Een foutmelding met de markering "Msg 2627", overeenkomend met het foutnummer.

  • SQL-fouten: 1 t/m 49999
  • Eigen fouten: vanaf 50001
    select * from sys.messages
| message_id | language_id | severity | ... | text                                                            |
|------------|-------------|----------|-----|-----------------------------------------------------------------|
| ...        | ...         | ...      | ... | ...                                                             |
| 2627       | 1033        | 14       | ... | Violation of %ls constraint '%.*ls'. Cannot insert duplicate... |
| ...        | ...         | ...      | ... | ...                                                             |
Transacties en foutafhandeling in SQL Server

Opbouw van fouten

Ernstniveau

Een foutmelding met de markering "Level 14", overeenkomend met het ernstniveau.

  • 0-10: informatieve meldingen
  • 11-16: fouten die de gebruiker kan corrigeren (constraintschending, etc.)
  • 17-24: overige fouten (softwareproblemen, fatale fouten)
Transacties en foutafhandeling in SQL Server

Opbouw van fouten

Status

Een foutmelding met de markering "State 1", overeenkomend met de foutstatus.

  • 1: als SQL Server de fout toont
  • 0-255: eigen fouten
Transacties en foutafhandeling in SQL Server

Opbouw van fouten

Regel

Een foutmelding met de markering "Line 1", overeenkomend met de regel waar de fout optrad.

Procedure

Een foutmelding met de markering "Procedure Insert_product", overeenkomend met de naam van de opgeslagen procedure waar de fout optrad.

Transacties en foutafhandeling in SQL Server

Niet-af te vangen fouten

  • Ernst lager dan 11 (11-19 zijn af te vangen)

  • Ernst van 20 of hoger die de verbinding stopt

  • Compileerfouten: objecten/kolommen bestaan niet

Transacties en foutafhandeling in SQL Server

Niet-af te vangen fouten - voorbeeld compileerfout

BEGIN TRY
    SELECT non_existent_column FROM products;
END TRY
BEGIN CATCH
    SELECT 'You are in the CATCH block' AS message;
END CATCH
Msg 207, Level 16, State 1, Line 2
Invalid column name 'non_existent_column'.
Transacties en foutafhandeling in SQL Server

Laten we oefenen!

Transacties en foutafhandeling in SQL Server

Preparing Video For Download...