SqlException SqlException SqlException SqlException Class

Definition

Die Ausnahme, die ausgelöst wird, wenn SQL Server eine Warnung oder einen Fehler zurückgibt.The exception that is thrown when SQL Server returns a warning or error. Diese Klasse kann nicht vererbt werden.This class cannot be inherited.

public ref class SqlException sealed : System::Data::Common::DbException
[System.Serializable]
public sealed class SqlException : System.Data.Common.DbException
type SqlException = class
    inherit DbException
Public NotInheritable Class SqlException
Inherits DbException
Vererbung
Attribute

Beispiele

Im folgenden Beispiel wird eine SqlException und klicken Sie dann die Ausnahme angezeigt.The following example generates a SqlException and then displays the exception.

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";
    StringBuilder errorMessages = new StringBuilder();
    
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            for (int i = 0; i < ex.Errors.Count; i++)
            {
                errorMessages.Append("Index #" + i + "\n" +
                    "Message: " + ex.Errors[i].Message + "\n" +
                    "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                    "Source: " + ex.Errors[i].Source + "\n" +
                    "Procedure: " + ex.Errors[i].Procedure + "\n");
            }
            Console.WriteLine(errorMessages.ToString());
        }
    }
}
Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
    Dim errorMessages As New StringBuilder()

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            Dim i As Integer
            For i = 0 To ex.Errors.Count - 1
                errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
                    & "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
                    & "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
                    & "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
                    & "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
            Next i
            Console.WriteLine(errorMessages.ToString())
        End Try
    End Using
End Sub

Hinweise

Diese Klasse wird erstellt, wenn die .NET Framework-Datenanbieter für SQL Server einen vom Server generierten Fehler trifft.This class is created whenever the .NET Framework Data Provider for SQL Server encounters an error generated from the server. (Clientseitige Fehler werden als standard common Language Runtime-Ausnahmen ausgelöst.) SqlException enthält immer mindestens eine Instanz der SqlError.(Client side errors are thrown as standard common language runtime exceptions.) SqlException always contains at least one instance of SqlError.

Nachrichten mit dem Schweregrad von 10 oder weniger dienen zu Informationszwecken und weisen auf Probleme verursacht, die durch fehlerhafte Informationen, die ein Benutzer eingegeben hat.Messages that have a severity level of 10 or less are informational and indicate problems caused by mistakes in information that a user has entered. Schweregrade von 11 bis 16 werden vom Benutzer generiert, und können vom Benutzer korrigiert werden.Severity levels from 11 through 16 are generated by the user, and can be corrected by the user. Schweregrade von 17 bis 25 zeigen Software- oder Hardwarefehler an.Severity levels from 17 through 25 indicate software or hardware errors. Wenn ein Schweregrad 17, die 18 oder 19 Fehler auftritt, wird Sie weiterarbeiten können, obwohl Sie möglicherweise nicht auf eine bestimmte Anweisung ausgeführt werden können.When a level 17, 18, or 19 error occurs, you can continue working, although you might not be able to execute a particular statement.

Die SqlConnection bleibt hergestellt, wenn der Schweregrad 19 oder darunter beträgt.The SqlConnection remains open when the severity level is 19 or less. Wenn der Schweregrad 20 oder höher ist, schließt der Server normalerweise die SqlConnection.When the severity level is 20 or greater, the server ordinarily closes the SqlConnection. Die Benutzer können die Verbindung aber erneut öffnen und fortfahren.However, the user can reopen the connection and continue. In beiden Fällen wird von der Methode, die den Befehl ausführt, eine SqlException generiert.In both cases, a SqlException is generated by the method executing the command.

Weitere Informationen zu den Warnungen und sonstige Meldungen, die von SQL Server gesendet werden, finden Sie unter Datenbank-Engine-Fehler und Ereignisse.For information about the warning and informational messages sent by SQL Server, see Database Engine Events and Errors. Die SqlException Klasse zugeordnet, SQL Server-Schweregrad.The SqlException class maps to SQL Server severity.

Im folgenden finden allgemeine Informationen zur Behandlung von Ausnahmen.The following is general information on handling exceptions. Ihr Code sollte Abfangen von Ausnahmen, um zu verhindern, dass die Anwendung abstürzt und ermöglichen dem Benutzer eine entsprechende Fehlermeldung angezeigt.Your code should catch exceptions to prevent the application from crashing and to allow displaying a relevant error message to the user. Sie können Datenbanktransaktionen verwenden, um sicherzustellen, dass die Daten unabhängig davon sind, was, in der Clientanwendung geschieht (einschließlich eines Absturzes) konsistent.You can use database transactions to ensure that the data is consistent regardless of what happens in the client application (including a crash). Funktionen wie System.Transaction.TransactionScope oder die BeginTransaction-Methode (in System.Data.OleDb.OleDbConnection System.Data.ODBC.ODBCConnection und System.Data.SqlClient.SqlConnection) stellen konsistente Daten unabhängig von Ausnahmen wird ausgelöst, von einem Anbieter.Features like System.Transaction.TransactionScope or the BeginTransaction method (in System.Data.OleDb.OleDbConnection, System.Data.ODBC.ODBCConnection, and System.Data.SqlClient.SqlConnection) ensure consistent data regardless of exceptions raised by a provider. Transaktionen können fehlschlagen, also Abfangen von Fehlern und wiederholen Sie die Transaktion.Transactions can fail, so catch failures and retry the transaction.

Beachten Sie, beginnend mit .NET Framework 4.5 SqlException können zurückgeben, eine innere Win32Exception.Note that beginning with .NET Framework 4.5, SqlException can return an inner Win32Exception.

Die Exception-Klasse, eines .NET Framework-Datenanbieters werden die anbieterspezifischen-Fehler gemeldet.The exception class of a .NET Framework data provider reports provider-specific errors. System.Data.Odbc hat z. B. OdbcException, System.Data.OleDb hat OleDbException und "System.Data.SqlClient" verfügt über die SqlException.For example System.Data.Odbc has OdbcException, System.Data.OleDb has OleDbException, and System.Data.SqlClient has SqlException. Abzufangen Sie für die beste von Fehlerdetails diese Ausnahmen, und verwenden Sie die Elemente dieser Ausnahme-Klassen, um die Details des Fehlers zu erhalten.For the best level of error detail, catch these exceptions and use the members of these exception classes to get details of the error.

Zusätzlich zu den Fehlern anbieterspezifische können .NET Framework-Anbieter Datentypen wie z. B. System.OutOfMemoryException und System.Threading.ThreadAbortException .NET Framework-Ausnahmen auslösen.In addition to the provider-specific errors, .NET Framework data provider types can raise .NET Framework exceptions such as System.OutOfMemoryException and System.Threading.ThreadAbortException. Behebung dieser Ausnahmen möglicherweise nicht möglich.Recovery from these exceptions may not be possible.

Ungültige Eingabe kann es sich um eine .NET Framework-Anbieter-Datentyp zum Auslösen einer Ausnahme, z. B. System.ArgumentException oder System.IndexOutOfRangeException führen.Bad input can cause a .NET Framework data provider type to raise an exception such as System.ArgumentException or System.IndexOutOfRangeException. Aufrufen einer Methode zur falschen Zeit kann System.InvalidOperationException auslösen.Calling a method at the wrong time can raise System.InvalidOperationException.

Also im Allgemeinen einen Ausnahmehandler, der einem beliebigen Anbieter abfängt schreiben bestimmte Ausnahmen als auch Ausnahmen von der common Language Runtime.So, in general, write an exception handler that catches any provider specific exceptions as well as exceptions from the common language runtime. Diese können wie folgt angeordnet sein:These can be layered as follows:

try {  
   // code here  
}  
catch (SqlException odbcEx) {  
   // Handle more specific SqlException exception here.  
}  
catch (Exception ex) {  
   // Handle generic ones here.  
}  

oder:Or:

try {  
   // code here  
}  
catch (Exception ex) {  
   if (ex is SqlException) {  
      // Handle more specific SqlException exception here.  
   }  
   else {  
      // Handle generic ones here.  
   }  
}  

Es ist auch möglich, für die .NET Framework Data Provider Aufruf einer Methode zu auf einem Threadpoolthread kein Benutzercode auf dem Stapel.It is also possible for a .NET Framework data provider method call to fail on a thread pool thread with no user code on the stack. In diesem Fall und asynchrone Methodenaufrufe verwenden, müssen Sie registrieren die UnhandledException Ereignis, um diese Ausnahmen zu behandeln und Anwendungsabstürze vermieden.In this case, and when using asynchronous method calls, you must register the UnhandledException event to handle those exceptions and avoid application crash.

Eigenschaften

Class Class Class Class

Ruft den Schweregrad des von der .NET Framework-Datenanbieter für SQL Server zurückgegebenen Fehlers ab.Gets the severity level of the error returned from the .NET Framework Data Provider for SQL Server.

ClientConnectionId ClientConnectionId ClientConnectionId ClientConnectionId

Stellt die Clientverbindungs-ID.Represents the client connection ID. Weitere Informationen finden Sie unter Datenablaufverfolgung in ADO.NET.For more information, see Data Tracing in ADO.NET.

Data Data Data Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen über die Ausnahme bereitstellen.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
Errors Errors Errors Errors

Ruft eine Auflistung einer oder mehreren SqlError Objekte, die detaillierte über Ausnahmen Informationen, die von der .NET Framework-Datenanbieter für SQL Server generiert.Gets a collection of one or more SqlError objects that give detailed information about exceptions generated by the .NET Framework Data Provider for SQL Server.

HelpLink HelpLink HelpLink HelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
LineNumber LineNumber LineNumber LineNumber

Ruft die Zeilennummer in der Transact-SQL-Befehlsbatch oder die gespeicherte Prozedur, der den Fehler generiert hat.Gets the line number within the Transact-SQL command batch or stored procedure that generated the error.

Message Message Message Message

Ruft den Text ab, der den Fehler beschreibt.Gets the text describing the error.

Number Number Number Number

Ruft eine Nummer ab, die den Fehlertyp angibt.Gets a number that identifies the type of error.

Procedure Procedure Procedure Procedure

Ruft den Namen der gespeicherten Prozedur oder des Remoteprozeduraufrufs (RPC) ab, der diesen Fehler generiert hat.Gets the name of the stored procedure or remote procedure call (RPC) that generated the error.

Server Server Server Server

Ruft den Namen des Computers, der eine Instanz von SQL Server ausgeführt wird, die den Fehler generiert hat.Gets the name of the computer that is running an instance of SQL Server that generated the error.

Source Source Source Source

Ruft den Namen des Providers ab, der den Fehler generiert hat.Gets the name of the provider that generated the error.

StackTrace StackTrace StackTrace StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
State State State State

Ruft einen numerischen Fehlercode von SQL Server, die einen Fehler, Warnung oder "keine Daten gefunden"-Meldung darstellt.Gets a numeric error code from SQL Server that represents an error, warning or "no data found" message. Weitere Informationen über das Decodieren dieser Werte finden Sie unter Datenbank-Engine – Fehler.For more information about how to decode these values, see Database Engine Events and Errors.

TargetSite TargetSite TargetSite TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.Gets the method that throws the current exception.

(Inherited from Exception)

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetBaseException() GetBaseException() GetBaseException() GetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die ursprüngliche Ursache für eine oder mehrere nachfolgende Ausnahmen ist.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Inherited from Exception)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext)

Legt SerializationInfo mit Informationen zur Ausnahme fest.Sets the SerializationInfo with information about the exception.

GetType() GetType() GetType() GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.Gets the runtime type of the current instance.

(Inherited from Exception)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge, die der aktuelle darstellt SqlException Objekt aus, und schließt die Clientverbindungs-ID (Weitere Informationen finden Sie unter ClientConnectionId).Returns a string that represents the current SqlException object, and includes the client connection ID (for more information, see ClientConnectionId).

Ereignisse

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Gilt für:

Siehe auch