V SQL Server existuje systémová tabulka, ve které jsou uloženy všechny možné Error stavy a jejich závažnost = severity. Error severity nabývá hodnot 0-25 a definuje závažnost chyby. Všechny zprávy se kterými se můžeme v SQL Server setkat jsou uloženy v tabulce sys.messages.
USE MASTER
SELECT * FROM SYS.MESSAGES
WHERE language_id = 1033
Tabulka obsahuje cca 300 000 informačních a error zpráv ve všech jazykových mutacích SQL Server. Proto při dotazu do tabulky musíme omezit jazyk na 1033 (Angličtina), případně jiný dle preferencí.
Klasifikace Error Severity – závažnost chyby
- 0 – 10 -> informativní zprávy, nejedná se o chybu – příklad : “Data truncation error. Length … exceeds maximum length .. for type …”
- 11 – 16 -> Chyby, které jsou způsobeny na straně uživatele – např spuštění špatně napsaného skriptu – příklad: “Invalid column name …”
- 17 -> Indikuje problém s prostředky servery, jedná se např o zámky (deadlock, apod) – příklad: “There is insufficient memory available in the buffer pool.”
- 18 -> Indikuje problém se software na serveru – příklad: “The transaction has been stopped because it conflicted with the execution of a FILESTREAM close operation using the same transaction. The transaction will be rolled back.”
- 19 -> Překročení limitu prostředků (nekonfigurovatelných v SQL Server) – příklad: “There is insufficient system memory in resource pool … to run this query.”
- 20 -> Chyba na úrovni daného procesu – příklad: “Error while reading resource manager notification from Kernel Transaction Manager (KTM)”
- 21 -> SQL server identifikoval problém, který ovlivňuje všechny procesy v databázi – příklad: “The database ID %d already exists.”
- 22 -> Závažné poškození tabulky nebo indexu – příklad: “The schema of a table created by InternalBaseTable is corrupt.”
- 23 -> Indikuje poškození databáze – příklad: “Corruption in database … possibly due to schema or catalog inconsistency. Run DBCC CHECKCATALOG.”
- 24 -> Problém s hardwarem – příklad: “The MSSQLServer service terminated unexpectedly. Check the SQL Server error log and operating system error logs for possible causes.”
- 25 -> Některé systémové chyby – v SQL Server 2017 žádná taková zpráva již není (týká se předchozích edicí)
Doporučuju projít ještě článek ohledně toho, jak pracovat s Error hláškami pomocí TRY/CATCH
Zdroj: Microsoft dokumentace