Informazioni sugli errori del Motore di databaseUnderstanding Database Engine Errors

Nella tabella seguente sono descritti gli attributi degli errori generati da MicrosoftMicrosoft Motore di database di SQL ServerSQL Server Database Engine .Errors raised by the MicrosoftMicrosoft Motore di database di SQL ServerSQL Server Database Engine have the attributes described in the following table.

AttributeAttribute DescrizioneDescription
Numero di erroreError number Numero di errore univoco per ogni messaggio di errore.Each error message has a unique error number.
Stringa del messaggio di erroreError message string Il messaggio di errore include informazioni di diagnostica relative alla causa dell'errore.The error message contains diagnostic information about the cause of the error. Molti messaggi di errore contengono variabili di sostituzione con informazioni specifiche, ad esempio il nome dell'oggetto che ha generato l'errore.Many error messages have substitution variables in which information, such as the name of the object generating the error, is inserted.
SeveritySeverity Indica il livello di gravità dell'errore.The severity indicates how serious the error is. Gli errori con un livello di gravità basso, ad esempio 1 o 2, sono messaggi informativi o avvisi di basso livello,Errors that have a low severity, such as 1 or 2, are information messages or low-level warnings. mentre gli errori che presentano un livello di gravità elevato segnalano problemi da risolvere immediatamente.Errors that have a high severity indicate problems that should be addressed as soon as possible. Per altre informazioni sui livelli di gravità, vedere Gravità degli errori del Motore di database.For more information about severities, see Database Engine Error Severities.
StateState Alcuni messaggi di errore possono essere generati in più punti del codice di Motore di databaseDatabase Engine.Some error messages can be raised at multiple points in the code for the Motore di databaseDatabase Engine. L'errore 1105, ad esempio, può essere generato in risposta a più condizioni diverse.For example, an 1105 error can be raised for several different conditions. A ogni condizione specifica che genera un errore viene assegnato un codice di stato univoco.Each specific condition that raises an error assigns a unique state code.

Quando si consultano database che contengono informazioni relative a problemi noti, ad esempio la MicrosoftMicrosoft Knowledge Base, è possibile utilizzare il numero di contesto per determinare se il problema registrato corrisponde all'errore che si è verificato.When you are viewing databases that contain information about known issues, such as the MicrosoftMicrosoft Knowledge Base, you can use the state number to determine whether the recorded issue is the same as the error you have encountered. Se ad esempio un articolo della Knowledge Base descrive un errore 1105 che presenta uno stato 2, mentre il messaggio di errore 1105 ricevuto dall'utente presenta uno stato 3, è probabile che la causa dell'errore sia diversa da quella indicata nell'articolo.For example, if a Knowledge Base Article describes an 1105 error that has a state of 2 and the 1105 error message you received had a state of 3, the error probably has a different cause than the one reported in the article.

Il codice di contesto di un errore consente inoltre al personale del supporto tecnico MicrosoftMicrosoft di individuare la posizione nel codice sorgente da cui è stato generato il codice di errore.A MicrosoftMicrosoft support engineer can also use the state code from an error to find the location in the source code where that error code is being raised. Queste informazioni possono fornire indicazioni aggiuntive utili per la diagnostica del problema.This information might provide additional ideas on how to diagnose the problem.
Nome della stored procedureProcedure name Rappresenta il nome della stored procedure o del trigger in cui si è verificato l'errore.Is the name of the stored procedure or trigger in which the error has occurred.
Numero di rigaLine number Indica quale istruzione di un batch, di una stored procedure, di un trigger o di una funzione ha generato l'errore.Indicates which statement in a batch, stored procedure, trigger, or function generated the error.

Tutti i messaggi di errore di sistema e definiti dall'utente in un'istanza di Motore di databaseDatabase Engine sono contenuti nella vista del catalogo sys.messages .All system and user-defined error messages in an instance of the Motore di databaseDatabase Engine are contained in the sys.messages catalog view. È possibile utilizzare l'istruzione RAISERROR per restituire errori definiti dall'utente a un'applicazione.You can use the RAISERROR statement to return user-defined errors to an application.

Tutte le API di database, ad esempio lo spazio dei nomi MicrosoftMicrosoft .NET Framework.NET Framework SQLClient , ADO (ActiveX Data Objects), OLE DB e ODBC (Open Database Connectivity) forniscono gli attributi di base dell'errore.All database APIs, such as the MicrosoftMicrosoft .NET Framework.NET Framework SQLClient namespace, ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC), report the basic error attributes. Queste informazioni includono il numero di errore e la stringa di messaggio.This information includes the error number and message string. Non tutte le API forniscono tuttavia anche tutti gli altri attributi dell'errore.However, not all the APIs report all the other error attributes.

Le informazioni relative a un errore che si verifica nell'ambito del blocco TRY di un costrutto TRY…CATCH possono essere ottenute nel codice Transact-SQLTransact-SQL mediante funzioni quali ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY ed ERROR_STATE nell'ambito del blocco CATCH associato.Information about an error that occurs in the scope of the TRY block of a TRY…CATCH construct can be obtained in Transact-SQLTransact-SQL code by using functions such as ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, and ERROR_STATE in the scope of the associated CATCH block. Per altre informazioni, vedere TRY...CATCH (Transact-SQL).For more information, see TRY...CATCH (Transact-SQL).

EsempiExamples

Nell'esempio seguente viene eseguita una query sulla vista del catalogo sys.messages per restituire un elenco di tutti i messaggi di errore di sistema e definiti dall'utente in Motore di databaseDatabase Engine con testo in lingua inglese (1033).The following example queries the sys.messages catalog view to return a list of all system and user-defined error messages in the Motore di databaseDatabase Engine that have English text (1033).

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

Per altre informazioni, vedere sys.messages (Transact-SQL).For more information, see sys.messages (Transact-SQL).

Vedere ancheSee Also

sys.messages (Transact-SQL) sys.messages (Transact-SQL)
RAISERROR (Transact-SQL) RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL) @@ERROR (Transact-SQL)
TRY...CATCH (Transact-SQL) TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL) ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL) ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL) ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL) ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL) ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL) ERROR_STATE (Transact-SQL)