Delen via


Begrijpen van database-enginefouten

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric

Fouten die worden gegenereerd door de Microsoft SQL Server Database Engine, hebben de kenmerken die in de volgende tabel worden beschreven.

Attribuut Beschrijving
Foutnummer Elk foutbericht heeft een uniek foutnummer.
Foutberichttekenreeks Het foutbericht bevat diagnostische informatie over de oorzaak van de fout. Veel foutberichten bevatten vervangingsvariabelen waarin informatie, zoals de naam van het object dat de fout genereert, wordt ingevoegd.
Ernst De ernst geeft aan hoe ernstig de fout is. Fouten met een lage ernst, zoals 1 of 2, zijn informatieberichten of waarschuwingen op laag niveau. Fouten met een hoge ernst geven aan dat problemen zo snel mogelijk moeten worden opgelost. Zie Ernstniveaus van database-enginefoutenvoor meer informatie over de ernstniveaus.
Staat Sommige foutberichten kunnen worden gegenereerd op meerdere punten in de code voor de database-engine. Een 1105-fout kan bijvoorbeeld worden gegenereerd onder verschillende omstandigheden. Aan elke specifieke voorwaarde die een fout genereert, wordt een unieke statuscode toegewezen.

Wanneer u databases bekijkt die informatie bevatten over bekende problemen, zoals de Microsoft Knowledge Base, kunt u het statusnummer gebruiken om te bepalen of het geregistreerde probleem hetzelfde is als de fout die u hebt opgetreden. Als een Knowledge Base-artikel bijvoorbeeld een 1105-fout beschrijft met de status 2 en het 1105-foutbericht dat u hebt ontvangen een status van 3 heeft, heeft de fout waarschijnlijk een andere oorzaak dan de fout die in het artikel is gerapporteerd.

Een Microsoft-ondersteuningstechnicus kan ook de statuscode van een fout gebruiken om de locatie in de broncode te vinden waar die foutcode wordt gegenereerd. Deze informatie kan aanvullende ideeën bieden over het vaststellen van het probleem.
Procedurenaam Is de naam van de opgeslagen procedure of trigger waarin de fout is opgetreden.
Regelnummer Geeft aan welke instructie in een batch, opgeslagen procedure, trigger of functie de fout heeft gegenereerd.

Alle door het systeem en de gebruiker gedefinieerde foutberichten in een exemplaar van de database-engine bevinden zich in de sys.messages catalogusweergave. U kunt de instructie RAISERROR gebruiken om gebruikersgedefinieerde fouten naar een toepassing terug te geven.

Alle database-API's, zoals microsoft .NET Framework SQLClient naamruimte, ActiveX-gegevensobjecten (ADO), OLE DB en ODBC (Open Database Connectivity), rapporteren de basisfoutkenmerken. Deze informatie bevat het foutnummer en de tekenreeks van het bericht. Niet alle API's rapporteren echter alle andere foutkenmerken.

Informatie over een fout die optreedt in het bereik van het TRY-blok van een TRY... CATCH-constructie kan worden verkregen in Transact-SQL code met behulp van functies zoals ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY en ERROR_STATE binnen het bereik van het bijbehorende CATCH-blok. Voor meer informatie, zie TRY...CATCH (Transact-SQL).

Voorbeelden

In het volgende voorbeeld wordt een query uitgevoerd op de sys.messages catalogusweergave om een lijst te retourneren van alle door het systeem en de gebruiker gedefinieerde foutberichten in de database-engine met Engelse tekst (1033).

SELECT  
    message_id,  
    language_id,  
    severity,  
    is_event_logged,  
    text  
  FROM sys.messages  
  WHERE language_id = 1033;  

Zie sys.messages (Transact-SQL)voor meer informatie.

Zie ook

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)
FOUT_PROCÉDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
FOUTTOESTAND (Transact-SQL)