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 generiert und 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 immer dann erstellt, wenn die .NET Framework Datenanbieter für SQL Server auf einen vom Server generierten Fehler stößt.This class is created whenever the .NET Framework Data Provider for SQL Server encounters an error generated from the server. (Client seitige Fehler werden als Standard Common Language Runtime Ausnahmen ausgelöst.) enthält immer mindestens eine Instanz von SqlError. SqlException(Client side errors are thrown as standard common language runtime exceptions.) SqlException always contains at least one instance of SqlError.

Nachrichten, die einen Schweregrad von 10 oder weniger aufweisen, sind Informations Informationen und weisen auf Probleme hin, die durch Fehler in den von einem Benutzer eingegebenen Informationen verursacht wurden.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. Die 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 Fehler der Stufe 17, 18 oder 19 auftritt, können Sie die Arbeit fortsetzen, obwohl Sie möglicherweise nicht in der Lage sind, eine bestimmte Anweisung auszuführen.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 größer ist, schließt der Server normalerweise SqlConnectionden.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.

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

Im folgenden finden Sie allgemeine Informationen zur Behandlung von Ausnahmen.The following is general information on handling exceptions. Der Code sollte Ausnahmen abfangen, um zu verhindern, dass die Anwendung abstürzt und eine relevante Fehlermeldung für den Benutzer angezeigt wird.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 konsistent sind, unabhängig davon, was in der Client Anwendung passiert (einschließlich eines Absturzes).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. transaktionscope 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 sicher. 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. fangen Sie daher Fehler ab, und wiederholen Sie die Transaktion.Transactions can fail, so catch failures and retry the transaction.

Beachten Sie, dass ab .NET Framework 4,5 SqlException einen inneren Win32Exceptionzurückgeben kann.Note that beginning with .NET Framework 4.5, SqlException can return an inner Win32Exception.

Die Ausnahme Klasse eines .NET Framework-Datenanbieters meldet anbieterspezifische Fehler.The exception class of a .NET Framework data provider reports provider-specific errors. Beispielsweise verfügt System. Data. ODBC über OdbcException, System. Data. OleDb über OleDbException, und System. Data. SqlClient hat SqlException.For example System.Data.Odbc has OdbcException, System.Data.OleDb has OleDbException, and System.Data.SqlClient has SqlException. Um das beste Maß an Fehlerdetails zu erhalten, fangen Sie diese Ausnahmen ab, und verwenden Sie die Member dieser Ausnahme Klassen, um Details zum Fehler 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 anbieterspezifischen Fehlern können .NET Framework Datenanbieter Typen .NET Framework Ausnahmen auslösen, wie z. b. System. OutOfMemoryException und System. Threading. ThreadAbortException.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. Eine Wiederherstellung dieser Ausnahmen ist möglicherweise nicht möglich.Recovery from these exceptions may not be possible.

Ungültige Eingaben können dazu führen, dass ein .NET Framework Daten Anbietertyp eine Ausnahme auslöst, wie z. b. System. ArgumentException oder System. indexoudefrangeexception.Bad input can cause a .NET Framework data provider type to raise an exception such as System.ArgumentException or System.IndexOutOfRangeException. Wenn Sie eine Methode zum falschen Zeitpunkt aufrufen, kann System. InvalidOperationException ausgelöst werden.Calling a method at the wrong time can raise System.InvalidOperationException.

Schreiben Sie daher im Allgemeinen einen Ausnahmehandler, der alle anbieterspezifischen Ausnahmen und Ausnahmen von der Common Language Runtime abfängt.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 geschichtet werden: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, dass ein .NET Framework Datenanbieter-Methodenaufrufe in einem Thread Pool Thread fehlschlägt, der keinen Benutzercode auf dem Stapel hat.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 müssen Sie, wenn Sie asynchrone Methodenaufrufe verwenden, das Ereignis UnhandledException registrieren, um diese Ausnahmen zu behandeln und den Anwendungs Absturz zu vermeiden.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 vom .NET Framework-Datenprovider 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 dar.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 von mindestens einem SqlError-Objekt ab, die ausführliche Informationen über die vom .NET Framework-Datenanbieter für SQL Server generierte Ausnahmen enthält.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 im Transact-SQL-Befehlsbatch oder in der gespeicherten Prozedur ab, die den Fehler verursacht 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 ab, auf dem 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 ab, der eine Fehler-, Warn- 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 zurück, die das aktuelle SqlException-Objekt darstellt, und schließt die Clientverbindungs-ID (weitere Informationen finden Sie unter ClientConnectionId) ein.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