Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
När ett fel utlöses av SQL Server Database Engine anger felets allvarlighetsgrad vilken typ av problem som SQL Server har stött på.
Allvarlighetsgrad
I följande tabell visas och beskrivs allvarlighetsgraderna för de fel som genereras av SQL Server Database Engine.
| Allvarlighetsgrad | Description |
|---|---|
| 0-9 | Ange informationsmeddelanden som returnerar statusinformation eller rapportfel som inte är allvarliga. Databasmotorn skapar inte systemfel med allvarlighetsgraden 0 till 9. |
| 10 | Anger informationsmeddelanden som returnerar statusinformation eller rapportfel som inte är allvarliga. Av kompatibilitetsskäl konverterar databasmotorn allvarlighetsgrad 10 till allvarlighetsgrad 0 innan felinformationen returneras till det anropande programmet. |
| 11-16 | Ange fel som kan korrigeras av användaren. |
| 11 | Anger att det angivna objektet eller entiteten inte finns. |
| 12 | En särskild allvarlighetsgrad för frågor som inte använder låsning på grund av särskilda frågetips. I vissa fall kan läsåtgärder som utförs av dessa instruktioner resultera i inkonsekventa data eftersom lås inte vidtas för att garantera konsekvens. |
| 13 | Anger transaktionslåsningsfel. |
| 14 | Anger säkerhetsrelaterade fel, till exempel nekad behörighet. |
| 15 | Anger syntaxfel i kommandot Transact-SQL. |
| 16 | Anger allmänna fel som kan korrigeras av användaren. |
| 17-19 | Ange programvarufel som inte kan korrigeras av användaren. Informera systemadministratören om problemet. |
| 17 | Anger att instruktionen gjorde att SQL Server fick slut på resurser (till exempel minne, lås eller diskutrymme för databasen) eller att överskrida någon gräns som angetts av systemadministratören. |
| 18 | Anger ett problem i databasmotorns programvara, men instruktionen slutförs och anslutningen till instansen av databasmotorn bibehålls. Systemadministratören bör informeras varje gång ett meddelande med allvarlighetsgrad 18 inträffar. |
| 19 | Anger att en icke-konfigurerbar gräns för databasmotorn har överskridits och att den aktuella batchprocessen har avslutats. Felmeddelanden med en allvarlighetsgrad på 19 eller högre stoppar körningen av den aktuella batchen. Allvarlighetsgrad 19-fel är sällsynta och måste korrigeras av systemadministratören eller din primära supportleverantör. Kontakta systemadministratören när ett meddelande med allvarlighetsgrad 19 har tagits upp. Felmeddelanden med allvarlighetsgrad från 19 till 25 skrivs till felloggen. |
| 20-24 | Ange systemproblem och är allvarliga fel, vilket innebär att databasmotoraktiviteten som kör en instruktion eller batch inte längre körs. Uppgiften registrerar information om vad som hände och avslutas sedan. I de flesta fall kan programanslutningen till instansen av databasmotorn också avslutas. Om det gör det kanske programmet, beroende på problemet, inte kan återansluta. Felmeddelanden i det här intervallet kan påverka alla processer som kommer åt data i databasen och kan tyda på att en databas eller ett objekt är skadat. Felmeddelanden med allvarlighetsgrad från 19 till 24 skrivs till felloggen. |
| 20 | Anger att ett -uttryck påträffade ett problem. Eftersom problemet bara påverkade den aktuella aktiviteten är det inte troligt att själva databasen är skadad. |
| 21 | Anger att ett problem har påträffats som påverkar alla uppgifter i den aktuella databasen, men det är inte troligt att själva databasen är skadad. |
| 22 | Anger att tabellen eller indexet som anges i meddelandet har skadats av ett programvaru- eller maskinvaruproblem. Allvarlighetsgrad 22-fel uppstår sällan. Om det ena inträffar kör du DBCC CHECKDB för att avgöra om andra objekt i databasen också är skadade. Problemet kan bara finnas i buffertcachen och inte på själva disken. I så fall korrigerar du problemet genom att starta om instansen av databasmotorn. Om du vill fortsätta arbeta måste du återansluta till instansen av databasmotorn. Annars kan du använda DBCC för att reparera problemet. I vissa fall kan du behöva återställa databasen.Om du inte åtgärdar problemet genom att starta om instansen av databasmotorn finns problemet på disken. Ibland löser du problemet genom att förstöra objektet som anges i felmeddelandet. Om meddelandet till exempel rapporterar att instansen av databasmotorn har hittat en rad med längden 0 i ett icke-grupperat index tar du bort indexet och återskapar det. |
| 23 | Anger att hela databasens integritet är i fråga på grund av ett maskinvaru- eller programvaruproblem. Allvarlighetsgrad 23-fel uppstår sällan. Om en inträffar kör du DBCC CHECKDB för att fastställa skadans omfattning. Problemet kan bara finnas i cacheminnet och inte på själva disken. I så fall korrigerar du problemet genom att starta om instansen av databasmotorn. Om du vill fortsätta arbeta måste du återansluta till instansen av databasmotorn. Annars kan du använda DBCC för att reparera problemet. I vissa fall kan du behöva återställa databasen. |
| 24 | Anger ett mediefel. Systemadministratören kan behöva återställa databasen. Du kan också behöva ringa maskinvaruleverantören. |
Användardefinierad allvarlighetsgrad för felmeddelande
Du kan använda sp_addmessage för att lägga till användardefinierade felmeddelanden med allvarlighetsgrad från 1 till 25 i sys.messages katalogvyn. Dessa användardefinierade felmeddelanden kan användas av RAISERROR. Mer information finns i sp_addmessage.
RAISERROR kan användas för att generera användardefinierade felmeddelanden med allvarlighetsgrad från 1 till 25.
RAISERROR kan referera till ett användardefinierat felmeddelande som lagras i sys.messages katalogvyn eller skapa ett meddelande dynamiskt. När RAISERROR använder ett användardefinierat felmeddelande i sys.messages när det genererar ett fel åsidosätter allvarlighetsgraden som anges av RAISERROR allvarlighetsgraden som anges i sys.messages. Mer information finns i RAISERROR.
Allvarlighetsgrad för fel och TRY... FÅNGA
En TRY...CATCH konstruktion fångar upp alla körningsfel med allvarlighetsgrad större än 10 som inte avslutar databasanslutningen.
Fel med allvarlighetsgrad mellan 0 och 10 är informationsmeddelanden och leder inte till att körningen hoppar från byggblocket CATCHTRY...CATCH .
Fel som avslutar databasanslutningen, vanligtvis med allvarlighetsgrad från 20 till 25, hanteras inte av CATCH blocket eftersom körningen avbryts när anslutningen avslutas.
Mer information finns i TRY... CATCH.
Hämta allvarlighetsgrad för fel
Systemfunktionen ERROR_SEVERITY kan användas för att hämta allvarlighetsgraden för det fel som orsakade att byggblocket CATCHTRY...CATCH kördes.
ERROR_SEVERITY returnerar NULL om det anropas utanför omfånget för ett CATCH block. Mer information finns i ERROR_SEVERITY.