MSSQLSERVER_17066
Gilt für: SQL Server
Details
attribute | Wert |
---|---|
Produktname | SQL Server |
Ereignis-ID | 17066 |
Ereignisquelle | MSSQLSERVER |
Komponente | SQLEngine |
Symbolischer Name | SQLASSERT_ONLY |
Meldungstext | SQL Server Assertion: Datei: <%s>, line=%d Failed Assertion = '%s'. Dieser Fehler hängt möglicherweise mit dem Ausführungszeitpunkt zusammen. Wenn der Fehler nach dem erneuten Ausführen der Anweisung weiterhin auftritt, überprüfen Sie die Datenbank mit DBCC CHECKDB auf strukturelle Integrität, oder starten Sie den Server neu, um sicherzustellen, dass keine speicherresidenten Datenstrukturen beschädigt sind. |
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_3624 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
Überprüfen Des Builds von SQL Server finden Sie unter Ermitteln der Version und Edition von SQL Server, Datenbank-Engine ausgeführt wird.
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.
Ü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.
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.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.
Ü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.
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.