Sdílet prostřednictvím


Závažnosti chyb databázového stroje

platí pro:SQL Server

Pokud databázový stroj SQL Serveru vyvolá chybu, závažnost chyby značí typ problému, ke kterým došlo sql Serverem.

Úrovně závažnosti

Následující tabulka uvádí a popisuje úrovně závažnosti chyb vyvolaných databázovým strojem SQL Serveru.

Úroveň závažnosti Description
0-9 Uveďte informační zprávy, které vracejí informace o stavu nebo hlásí chyby, které nejsou závažné. Databázový stroj nevyvolá systémové chyby se závažnostmi 0 až 9.
10 Označuje informační zprávy, které vrací informace o stavu nebo hlásí chyby, které nejsou závažné. Z důvodů kompatibility databázový stroj převede závažnost 10 na závažnost 0 před vrácením informací o chybě do volající aplikace.
11-16 Označte chyby, které může uživatel opravit.
11 Označuje, že daný objekt nebo entita neexistuje.
12 Zvláštní závažnost pro dotazy, které nepoužívají uzamčení kvůli speciálním tipům dotazů. V některých případech můžou operace čtení prováděné těmito příkazy vést k nekonzistentním datům, protože zámky nejsou převzaty kvůli zajištění konzistence.
13 Označuje chyby vzájemného zablokování transakce.
14 Označuje chyby související se zabezpečením, například odepření oprávnění.
15 Označuje chyby syntaxe v příkazu Transact-SQL.
16 Označuje obecné chyby, které může uživatel opravit.
17-19 Uveďte chyby softwaru, které uživatel nemůže opravit. Informujte správce systému o problému.
17 Označuje, že příkaz způsobil, že SQL Server našel prostředky (například paměť, zámky nebo místo na disku pro databázi) nebo překročil určitý limit nastavený správcem systému.
18 Označuje problém v softwaru databázového stroje, ale příkaz se dokončí a připojení k instanci databázového stroje je zachováno. Správce systému by měl být informován při každém výskytu zprávy se závažností 18.
19 Označuje, že byl překročen limit nekonfigurovatelného databázového stroje a aktuální dávkový proces byl ukončen. Chybové zprávy se závažností 19 nebo vyšší zastavují provádění aktuální dávky. Chyby úrovně závažnosti 19 jsou vzácné a musí je opravit správce systému nebo váš primární poskytovatel podpory. Pokud je vyvolána zpráva s úrovní závažnosti 19, obraťte se na správce systému. Chybové zprávy s úrovní závažnosti od 19 do 25 se zapisují do protokolu chyb.
20-24 Uveďte systémové problémy a jsou závažné chyby, což znamená, že úloha databázového stroje, která spouští příkaz nebo dávku, už není spuštěná. Úkol zaznamenává informace o tom, co se stalo, a poté se ukončí. Ve většině případů se může ukončit také připojení aplikace k instanci databázového stroje. Pokud ano, v závislosti na problému se aplikace nemusí znovu připojit.

Chybové zprávy v této oblasti můžou ovlivnit všechny procesy přistupující k datům v databázi a můžou značit poškození databáze nebo objektu. Chybové zprávy s úrovní závažnosti od 19 do 24 se zapisují do protokolu chyb.
20 Označuje, že příkaz zjistil problém. Vzhledem k tomu, že problém ovlivnil pouze aktuální úlohu, není pravděpodobné, že je databáze sama poškozena.
21 Označuje, že došlo k problému, který má vliv na všechny úlohy v aktuální databázi, ale není pravděpodobné, že samotná databáze je poškozena.
22 Označuje, že došlo k poškození tabulky nebo indexu zadané ve zprávě softwarovým nebo hardwarovým problémem.

K chybám úrovně závažnosti 22 dochází zřídka. Pokud dojde k jedné z nich, spusťte spuštění DBCC CHECKDB , abyste zjistili, zda jsou poškozeny i jiné objekty v databázi. Problém může být pouze v mezipaměti vyrovnávací paměti a ne na samotném disku. Pokud ano, restartování instance databázového stroje problém opraví. Pokud chcete pokračovat v práci, musíte se znovu připojit k instanci databázového stroje. V opačném případě použijte DBCC k opravě problému. V některých případech může být nutné obnovit databázi.

Pokud restartování instance databázového stroje problém nevyřeší, problém je na disku. Někdy zničení objektu zadaného v chybové zprávě vyřeší problém. Pokud například zpráva hlásí, že instance databázového stroje našla řádek s délkou 0 v neclusterovaného indexu, odstraňte index a znovu ho sestavte.
23 Označuje, že integrita celé databáze je dotčená kvůli problému s hardwarem nebo softwarem.

K chybám úrovně závažnosti 23 dochází zřídka. Pokud dojde k jedné z nich, spusťte DBCC CHECKDB , abyste určili rozsah poškození. Problém může být pouze v mezipaměti a ne na samotném disku. Pokud ano, restartování instance databázového stroje problém opraví. Pokud chcete pokračovat v práci, musíte se znovu připojit k instanci databázového stroje. V opačném případě použijte DBCC k opravě problému. V některých případech možná budete muset databázi obnovit.
dvacet čtyři Označuje selhání média. Správce systému může potřebovat obnovit databázi. Možná budete muset zavolat také dodavateli hardwaru.

Závažnost chybové zprávy definované uživatelem

Do zobrazení katalogu můžete přidat sp_addmessage uživatelem definované chybové zprávy se závažnostmi od 1 do sys.messages 25. Tyto uživatelem definované chybové zprávy lze použít RAISERROR. Další informace najdete v tématu sp_addmessage.

RAISERROR lze použít ke generování uživatelem definovaných chybových zpráv se závažnostmi od 1 do 25. RAISERROR může odkazovat na uživatelem definovanou chybovou sys.messages zprávu uloženou v zobrazení katalogu nebo dynamicky vytvořit zprávu. Při RAISERROR použití uživatelem definované chybové zprávy při sys.messages generování chyby, závažnost určená RAISERROR přepsáním závažnosti zadanou v sys.messages. Další informace naleznete v tématu RAISERROR.

Závažnost chyby a try... CHYTIT

Konstruktor TRY...CATCH zachytí všechny chyby spuštění se závažností větší než 10, které neukončí připojení k databázi.

Chyby se závažností od 0 do 10 jsou informační zprávy a nezpůsobí, že provádění přeskočí z CATCH bloku konstruktoru TRY...CATCH .

Chyby, které ukončují připojení k databázi, obvykle se závažností od 20 do 25, nezpracují CATCH blok, protože při ukončení připojení dojde k přerušení provádění.

Další informace naleznete v tématu TRY... CHYŤTE.

Načtení závažnosti chyby

ERROR_SEVERITY Systémovou funkci lze použít k načtení závažnosti chyby, která způsobila CATCH spuštění bloku konstruktoruTRY...CATCH. ERROR_SEVERITY vrátí NULL , pokud je volána mimo rozsah CATCH bloku. Další informace najdete v tématu ERROR_SEVERITY.