(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

SqlException-Klasse

Die Ausnahme, die ausgelöst wird, wenn SQL Server eine Warnung oder einen Fehler zurückgibt. Die Klasse erlaubt keine Vererbung.

Namespace:  System.Data.SqlClient
Assembly:  System.Data (in System.Data.dll)

[SerializableAttribute]
public sealed class SqlException : DbException

Der SqlException-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche EigenschaftClassRuft den Schweregrad des vom .NET Framework-Datenprovider für SQL Server zurückgegebenen Fehlers ab.
Öffentliche EigenschaftClientConnectionIdStellt die Clientverbindungs-ID dar. Weitere Informationen finden Sie unter Datenablaufverfolgung in ADO.NET.
Öffentliche EigenschaftDataRuft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zu der Ausnahme bereitstellen. (Von Exception geerbt.)
Öffentliche EigenschaftErrorCodeRuft HRESULT des Fehlers ab. (Von ExternalException geerbt.)
Öffentliche EigenschaftErrorsRuft 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.
Öffentliche EigenschaftHelpLinkRuft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest. (Von Exception geerbt.)
Öffentliche EigenschaftHResultRuft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist. (Von Exception geerbt.)
Öffentliche EigenschaftInnerExceptionRuft die Exception-Instanz ab, die die aktuelle Ausnahme verursachte. (Von Exception geerbt.)
Öffentliche EigenschaftLineNumberRuft die Zeilennummer im Transact-SQL-Befehlsbatch oder in der gespeicherten Prozedur ab, die den Fehler verursacht hat.
Öffentliche EigenschaftMessageRuft eine Meldung ab, die die aktuelle Ausnahme beschreibt. (Von Exception geerbt.)
Öffentliche EigenschaftNumberRuft eine Nummer ab, die den Fehlertyp angibt.
Öffentliche EigenschaftProcedureRuft den Namen der gespeicherten Prozedur oder des Remoteprozeduraufrufs (RPC) ab, der diesen Fehler generiert hat.
Öffentliche EigenschaftServerRuft den Namen des Computers ab, auf dem eine Instanz von SQL Server ausgeführt wird, die den Fehler generiert hat.
Öffentliche EigenschaftSourceRuft den Namen des Providers ab, der den Fehler generiert hat. (Überschreibt Exception.Source.)
Öffentliche EigenschaftStackTraceRuft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab. (Von Exception geerbt.)
Öffentliche EigenschaftStateRuft einen numerischen Fehlercode von SQL Server ab, der eine Fehler-, Warn- oder "Keine Daten gefunden"-Meldung darstellt. Weitere Informationen über das Decodieren dieser Werte finden Sie in der SQL Server-Onlinedokumentation.
Öffentliche EigenschaftTargetSiteRuft die Methode ab, die die aktuelle Ausnahme auslöst. (Von Exception geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Öffentliche MethodeGetBaseExceptionGibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die ursprüngliche Ursache für eine oder mehrere nachfolgende Ausnahmen ist. (Von Exception geerbt.)
Öffentliche MethodeGetHashCodeFungiert als die Standardhashfunktion. (Von Object geerbt.)
Öffentliche MethodeGetObjectDataLegt SerializationInfo mit Informationen zur Ausnahme fest. (Überschreibt Exception.GetObjectData(SerializationInfo, StreamingContext).)
Öffentliche MethodeGetTypeRuft den Laufzeittyp der aktuellen Instanz ab. (Von Exception geerbt.)
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle SqlException-Objekt darstellt, und schließt die Clientverbindungs-ID (weitere Informationen finden Sie unter ClientConnectionId) ein. (Überschreibt ExternalException.ToString().)

In .NET Framework Client Profile wird dieser Member von ToString() überschrieben.
Zum Seitenanfang

Diese Klasse wird immer erstellt, wenn der .NET Framework-Datenprovider für SQL Server einen vom Server generierten Fehler entdeckt. (Clientseitige Fehler werden als Standardausnahmen der Common Language Runtime ausgelöst.) SqlException enthält immer mindestens eine Instanz von SqlError.

Meldungen mit einem Schweregrad von bis zu 10 sind Informationsmeldungen und bezeichnen Probleme durch vom Benutzer fehlerhaft eingegebene Informationen. Schweregrade zwischen 11 und 16 werden durch Benutzer generiert und können durch den Benutzer korrigiert werden. Schweregrade von 17 bis 25 zeigen Software- oder Hardwarefehler an. Wenn ein Fehler mit einem Schweregrad von 17, 18 oder 19 auftritt, können Sie mit der Arbeit fortfahren, obwohl Sie eine bestimmte Anweisung möglicherweise nicht ausführen können.

Die SqlConnection bleibt hergestellt, wenn der Schweregrad 19 oder darunter beträgt. SqlConnection wird in der Regel ab dem Schweregrad 20 geschlossen. Der Benutzer kann jedoch erneut eine Verbindung herstellen und fortfahren. In beiden Fällen wird von der Methode, die den Befehl ausführt, eine SqlException generiert.

Weitere Informationen über die von SQL Server gesendeten Warn- und Informationsmeldungen finden Sie in der SQL Server-Onlinedokumentation im Abschnitt zur Problembehandlung. Die SqlException-Klasse wird dem SQL Server-Schweregrad zugeordnet.

Folgendes ist allgemeine Information zum Behandeln von Ausnahmen. Im Code sollten Ausnahmen abgefangen werden, um zu verhindern, dass die Anwendung abstürzt, und um das Anzeigen einer relevanten Fehlermeldung für den Benutzer zu ermöglichen. Sie können mithilfe von Datenbanktransaktionen sicherstellen, dass die Daten unabhängig von den Vorgängen in der Clientanwendung (einschließlich eines Absturzes) konsistent sind. 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 sicher, unabhängig von den von einem Anbieter ausgelösten Ausnahmen. Transaktionen können fehlschlagen, fangen Sie daher Fehler ab, und wiederholen Sie die Transaktion.

Die Ausnahmeklasse eines .NET Framework-Datenanbieters meldet anbieterspezifische Fehler. Beispiel: System.Data.Odbc hat OdbcException, System.Data.OleDb hat OleDbException und System.Data.SqlClient hat SqlException. Fangen Sie diese Ausnahmen für die beste Fehlerdetailebene ab, und verwenden Sie die Member dieser Ausnahmeklassen, um Details des Fehlers abzurufen.

Zusätzlich zu den anbieterspezifischen Fehlern können .NET Framework-Datenanbietertypen .NET Framework-Ausnahmen auslösen, z. B. System.OutOfMemoryException und System.Threading.ThreadAbortException. Die Behebung dieser Ausnahmen ist möglicherweise nicht möglich.

Ungültige Eingabe kann bewirken, dass ein .NET Framework-Datenanbietertyp eine Ausnahme auslöst, z. B. System.ArgumentException oder System.IndexOutOfRangeException. Das Aufrufen einer Methode zum falschen Zeitpunkt kann System.InvalidOperationException auslösen.

Schreiben Sie im Allgemeinen deshalb einen Ausnahmehandler, der anbieterspezifische Ausnahmen sowie Ausnahmen von der Common Language Runtime abfängt. Diese können folgendermaßen geschichtet werden:

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

Oder:

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

Ein Methodenaufruf eines .NET Framework-Datenanbieters kann auch für einen Threadpoolthread ohne Benutzercode im Stapel fehlschlagen. In diesem Fall, und wenn Sie asynchrone Methodenaufrufe verwenden, müssen Sie das UnhandledException-Ereignis registrieren, um diese Ausnahmen zu behandeln und einen Anwendungsabsturz zu vermeiden.

Im folgenden Beispiel wird eine SqlException generiert, und dann wird die Ausnahme angezeigt.


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());
        }
    }
}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft