Pochopení chyb databázového systému
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
koncový bod SQL Analytics ve službě Microsoft Fabric
Warehouse ve službě Microsoft Fabric
Chyby vyvolané databázovým strojem Microsoft SQL Serveru mají atributy popsané v následující tabulce.
Atribut | Popis |
---|---|
Číslo chyby | Každá chybová zpráva má jedinečné číslo chyby. |
Řetězec chybové zprávy | Chybová zpráva obsahuje diagnostické informace o příčině chyby. Mnoho chybových zpráv obsahuje proměnné nahrazení, do kterých se vloží informace, například název objektu, který chybu generuje. |
Závažnost | Závažnost označuje, jak závažná chyba je. Chyby s nízkou závažností, například 1 nebo 2, jsou informační zprávy nebo upozornění nízké úrovně. Chyby s vysokou závažností označují problémy, které by se měly řešit co nejdříve. Další informace o závažnostech naleznete v tématu Závažnosti chyb databázového stroje. |
Stát | Některé chybové zprávy mohou být vyvolány v několika bodech v kódu databázového stroje. Například chyba 1105 může být vyvolána pro několik různých podmínek. Každá konkrétní podmínka, která vyvolá chybu, přiřadí jedinečný stavový kód. Při prohlížení databází obsahujících informace o známých problémech, například znalostní báze Microsoft Knowledge Base, můžete pomocí čísla stavu určit, jestli je zaznamenaný problém stejný jako zjištěná chyba. Pokud například článek znalostní báze Knowledge Base popisuje chybu 1105 se stavem 2 a 1105 chybová zpráva, kterou jste obdrželi, měla stav 3, chyba pravděpodobně má jinou příčinu než ta, která je hlášena v článku. Technik podpory Microsoftu může také použít stavový kód z chyby k vyhledání umístění ve zdrojovém kódu, kde se tento kód chyby vyvolává. Tyto informace můžou obsahovat další nápady na diagnostiku problému. |
Název procedury | Je název uložené procedury nebo triggeru, ve kterém došlo k chybě. |
Číslo řádku | Určuje, který příkaz v dávce, uložené procedurě, triggeru nebo funkci vygeneroval chybu. |
Všechny systémové a uživatelem definované chybové zprávy v instanci databázového stroje jsou obsaženy v sys.messages zobrazení katalogu. Příkaz RAISERROR můžete použít k vrácení uživatelem definovaných chyb do aplikace.
Všechna databázová rozhraní API, jako je obor názvů Microsoft .NET Framework SQLClient, datové objekty ActiveX (ADO), OLE DB a ODBC (Open Database Connectivity), hlásí základní atributy chyb. Tyto informace zahrnují číslo chyby a řetězec zprávy. Ne všechna rozhraní API však hlásí všechny ostatní atributy chyby.
Informace o chybě, která se vyskytne v rámci bloku TRY konstrukce TRY...CATCH, lze získat v kódu Transact-SQL použitím funkcí, jako jsou ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY a ERROR_STATE, ve v rámci přidruženého bloku CATCH. Další informace najdete v tématu TRY...CATCH (Transact-SQL).
Příklady
Následující příklad dotazuje zobrazení katalogu sys.messages
, aby vrátil seznam všech systémových a uživatelem definovaných chybových zpráv v databázovém stroji, které mají anglický text (1033
).
SELECT
message_id,
language_id,
severity,
is_event_logged,
text
FROM sys.messages
WHERE language_id = 1033;
Další informace naleznete v tématu sys.messages (Transact-SQL).
Viz také
sys.messages (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
TRY... CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)