Sdílet prostřednictvím


Pochopení chyb databázového systému

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)koncový bod SQL Analytics ve službě Microsoft FabricWarehouse 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)