Anatomie chyb a nezachytitelné chyby

Transakce a zpracování chyb v SQL Serveru

Miriam Antona

Software Engineer

Anatomie chyby

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).
Transakce a zpracování chyb v SQL Serveru

Anatomie chyby

Číslo chyby

Chybová zpráva se zvýrazněným textem „Msg 2627", odpovídajícím číslu chyby.

  • Chyby SQL: 1 až 49999
  • Vlastní chyby: od 50001
    select * from sys.messages
| message_id | language_id | severity | ... | text                                                            |
|------------|-------------|----------|-----|-----------------------------------------------------------------|
| ...        | ...         | ...      | ... | ...                                                             |
| 2627       | 1033        | 14       | ... | Violation of %ls constraint '%.*ls'. Cannot insert duplicate... |
| ...        | ...         | ...      | ... | ...                                                             |
Transakce a zpracování chyb v SQL Serveru

Anatomie chyby

Úroveň závažnosti

Chybová zpráva se zvýrazněným textem „Level 14", odpovídajícím úrovni závažnosti chyby.

  • 0–10: informační zprávy
  • 11–16: chyby opravitelné uživatelem (porušení omezení apod.)
  • 17–24: ostatní chyby (problémy softwaru, závažné chyby)
Transakce a zpracování chyb v SQL Serveru

Anatomie chyby

Stav

Chybová zpráva se zvýrazněným textem „State 1", odpovídajícím stavu chyby.

  • 1: pokud chybu zobrazuje SQL Server
  • 0–255: vlastní chyby
Transakce a zpracování chyb v SQL Serveru

Anatomie chyby

Řádek

Chybová zpráva se zvýrazněným textem „Line 1", odpovídajícím řádku, kde chyba nastala.

Procedura

Chybová zpráva se zvýrazněným textem „Procedure Insert_product", odpovídajícím názvu uložené procedury, kde chyba nastala.

Transakce a zpracování chyb v SQL Serveru

Nezachytitelné chyby

  • Závažnost nižší než 11 (11–19 jsou zachytitelné)

  • Závažnost 20 nebo vyšší, která ukončí připojení

  • Kompilační chyby: neexistující objekty a sloupce

Transakce a zpracování chyb v SQL Serveru

Nezachytitelné chyby – příklad kompilační chyby

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'.
Transakce a zpracování chyb v SQL Serveru

Pojďme procvičovat!

Transakce a zpracování chyb v SQL Serveru

Preparing Video For Download...