Teilen über


MSSQLSERVER_3624

Gilt für: SQL Server

Details

attribute Wert
Produktname SQL Server
Ereignis-ID 3624
Ereignisquelle MSSQLSERVER
Komponente SQLEngine
Symbolischer Name SYS_ASSERTFAIL
Meldungstext Fehler bei einer Systemassertionsüberprüfung. Ausführliche Informationen finden Sie im SQL Server-Fehlerprotokoll. Normalerweise wird ein Assertionsfehler durch einen Softwarefehler oder beschädigte Daten verursacht. Führen Sie zum Überprüfen auf eine Beschädigung der Datenbank DBCC CHECKDB aus. Wenn Sie während des Setup zugestimmt haben, dass Abbilder an Microsoft gesendet werden sollen, wird ein Miniabbild an Microsoft gesendet. Möglicherweise ist ein Update von Microsoft im aktuellen Service Pack oder in einem Hotfix vom technischen Support verfügbar.

Erklärung

Asserts sind Anweisungen, die im Code einer Anwendung platziert werden, um sicherzustellen, dass bestimmte Bedingungen erfüllt sind. In diesem Zusammenhang verhält sich eine Assertion ähnlich wie ein Fehler. Man kann sich Dies als emphatisch, feste Fehler vorstellen. Die angegebene Bedingung muss erfüllt sein, damit das Programm die regelmäßige Ausführung fortsetzen kann. Wenn die Bedingung nicht erfüllt ist, wird die Assertion ausgelöst. Weitere Informationen finden Sie unter C/C++-Assertionen.

SQL Server verwendet Assertionen an vielen Stellen, um sicherzustellen, dass bedingungen erfüllt sind. Die Bedingung "existingState == DB_Unencrypted" bestätigt beispielsweise, dass ein Datenbankstatus unverschlüsselt ist, bevor der nächste Befehl im Code ausgeführt wird. Wenn dies nicht der Fall ist, wird die Behauptung ausgelöst. Fehler 3624 benachrichtigt Sie, dass eine solche Bedingung nicht erfüllt wurde und eine Bestätigung ausgelöst wurde.

Fehler 3624 wird zusammen mit MSSQLSERVER_17066 ausgelöst. Hier finden Sie Beispiele dafür, wie Sie diese Fehler im SQL Server-Fehlerprotokoll sehen können. Außerdem wird die während der Laufzeit ausgelöste Assertionsbedingung angezeigt, und der Fehler wird von SQL Server an die Clientanwendung gesendet.

Error: 17066, Severity: 16, State: 1.
SQL Server Assertion: File: <"e:\\b\\s3\\sources\\sql\\ntdbms\\hekaton\\engine\\hadr\\physical\\ckptctrlprocesslogrecord.cpp">, line=1634 Failed Assertion = 'existingState == DB_Unencrypted'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.
Error: 17066, Severity: 16, State: 1.
SQL Server Assertion: File: <"xdes.cpp">, line=4919 Failed Assertion = 'lck_sufficient (lckMode, LCK_M_IX) || lck_sufficient (lckMode, LCK_M_BU)'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.
SQL Server Assertion: File: <diskio.cpp>, line=2902 Failed Assertion = 'filepos + cBytes <= GetMaxOffsetForIO ()'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.

Ursache

Nachfolgend finden Sie einige mögliche Gründe für einen Ausfall der Bestätigung:

Produktfehler
Ein häufiger Grund für Die Durchsetzung von Fehlern sind Probleme im Produkt, die dazu führen, dass die Bedingungen nicht zutreffen. Diese Probleme müssen von Microsoft untersucht werden, und wenn sie reproduziert und verstanden werden, kann behoben werden.

Datenbankbeschädigung Eine weitere häufige Ursache für Bestätigungsfehler ist physische Inkonsistenzen in Datenbanken. Beschädigte Datenstrukturen können beim Lesen im Arbeitsspeicher dazu führen, dass die erwarteten Bedingungen falsch sind und somit eine Bestätigung auslösen.

Externe Bibliotheks- oder Filtertreiber Eine etwas häufige Ursache für die Bestätigung von Nachrichten wurde festgestellt, dass externe DLL im SQL Server-Speicher oder ein Filtertreiber verursacht wird, der zum Überwachen oder Abfangen von SQL Server-Aktivitäten entwickelt wurde. Wenn eine solche externe Komponente Objekte oder Strukturen ändert, die SQL Server verwendet, können Assertionsfehler auftreten. Weitere Informationen finden Sie unter Leistungs- und Konsistenzprobleme, wenn bestimmte Module oder Filtertreiber geladen werden.

Hardwareproblem (Arbeitsspeicher, CPU) Fehlerhafte Hardware kann zu Beschädigungen von Datenstrukturen im Arbeitsspeicher führen und somit zu Fehlern führen. Dieses Problem ist weniger häufig, tritt jedoch auf.

Benutzeraktion

  1. Überprüfen Des Builds von SQL Server finden Sie unter Ermitteln der Version und Edition von SQL Server, Datenbank-Engine ausgeführt wird.

  2. Suchen Sie die neuesten Updates, die für Ihre SQL Server-Version verfügbar sind, oder öffnen Sie die Excel-Datei am besten, in der alle Fixes für alle Builds aufgelistet sind.

  3. Überprüfen Sie die Artikel oder die Excel-Datei für alle Nachbehebungen, die nach dem aktuellen SQL Server-Build veröffentlicht wurden. Wenn Sie einen späteren Build finden, der Probleme behebt, sollten Sie ein Upgrade auf diesen Build durchführen.

  4. In einigen Fällen können Sie nach der spezifischen Assertionsbedingung im Fehler 17066 suchen. For example, in the above message search for lck_sufficient (lckMode, LCK_M_IX). Dieser Ausdruck hilft Ihnen bei einer genaueren Suche nach einem übereinstimmenden Problem. Dieser Ausdruck ist die Bedingung, die die Assertion an erster Stelle auslöst und ganz spezifisch ist.

  5. Führen Sie DBCC CHECKDB für Ihre Datenbanken aus. Wenn DBCC CHECKDB Datenbankbeschädigungsfehler meldet, konzentrieren Sie sich auf das Beheben dieses Problems vor allem anderen. Stellen Sie eine saubere Datenbanksicherung wieder her, und untersuchen Sie die Ursache für die Datenbankinkonsistenzen. Weitere Informationen finden Sie unter Problembehandlung von Datenbankkonsistenzfehlern, die von DBCC CHECKDB gemeldet wurden. Denken Sie daran, dass DBCC CHECKDB nicht auf Beschädigungen im Transaktionsprotokoll überprüft und wenn das Transaktionsprotokoll beschädigt ist, das nicht erkannt werden kann.

  6. Überprüfen, ob externe Module im SQL Server-Arbeitsspeicher geladen sind und auch nach Filtertreibern suchen

    SELECT * FROM sys.dm_os_loaded_modules
    WHERE company != 'Microsoft Corporation'
    

    Führen Sie für Filtertreiber den folgenden Befehl an der Eingabeaufforderung aus.

    fltmc filters
    

    Befolgen Sie die Empfehlungen in Leistungs- und Konsistenzproblemen, wenn bestimmte Module oder Filtertreiber geladen werden.

  7. Wenn Sie Ihren SQL Server bereits auf das neueste kumulative Update aktualisiert haben und DBCC CHECKDB keine Fehler meldet, wenden Sie sich an den technischen Support von Microsoft, und stellen Sie bereit, die folgenden Informationen bereitzustellen:

    • SQL Server-Fehlerprotokolle aus dem Ordner \Log
    • SQL Server-Speicherabbilder (SQLDump00xx.mdmp), die im Ordner "\Log" generiert wurden
    • Schritte zum Reproduzieren der Bestätigung, wenn verfügbar. Welche Abfrage oder Aktion führt dazu, dass die Assertion ausgelöst wird?
    • Ausgabe aus fltmc filters und aus dem "sys.dm_os_loaded_modules DMV
    • Informationen über Ihr System – Ausgabe von systeminfo