So reparieren Sie Datenbankkonsistenzfehler

7

Ich habe eine Microsoft Dynamics AX SQL Server-Datenbank. Ich laufe nur DBCC CHECKDB, um die Integrität zu überprüfen. Nach ein paar Minuten bekam ich am Ende der Ergebnisse folgendes:

CHECKDB hat in der Datenbank 'AXPROD' 0 Zuordnungsfehler und 4 Konsistenzfehler gefunden. paratur_rebuild ist die Mindestreparaturstufe für die von DBCC CHECKDB (AXPROD) gefundenen Fehler. DBCC-Ausführung abgeschlossen. Wenn DBCC Fehlermeldungen gedruckt hat, wenden Sie sich an Ihren Systemadministrator.

Da ich 4 Konsistenzfehler habe, würde ich gerne wissen, ob es eine Möglichkeit gibt, dies zu beheben oder detailliertere Informationen zu diesen Fehlern zu erhalten.

VAAA
quelle

Antworten:

10

Ich würde gerne wissen, ob es eine Möglichkeit gibt, dies zu beheben

Diese Konsistenzfehler können mit der folgenden REPAIR_REBUILDOptionDBCC CHECKDB behoben werden :

Führt Reparaturen durch, bei denen kein Datenverlust möglich ist. Dies kann schnelle Reparaturen wie das Reparieren fehlender Zeilen in nicht gruppierten Indizes und zeitaufwändigere Reparaturen wie das Wiederherstellen eines Index umfassen.

Wie in Shankys Antwort erwähnt, sollte jede DBCCReparatur auch innerhalb einer Transaktion durchgeführt werden, damit Sie die Änderungen überprüfen können, bevor Sie sie übernehmen.

Stellen Sie wie immer sicher, dass Sie über einen vollständig wiederherstellbaren Satz von Sicherungen verfügen (einschließlich des Protokoll-Endes, falls zutreffend), bevor Sie die Neuerstellung ausführen. Wenn Sie über einen vollständigen Satz gültiger Sicherungen verfügen (einschließlich des Protokoll-Endes) und sich die Ausfallzeit leisten können, ist die Wiederherstellung möglicherweise die bevorzugte Option. Stellen Sie sicher, dass Sie die aktuelle Datenbank nicht überschreiben, wenn Sie dies tun, nur für den Fall, dass die Wiederherstellung fehlschlägt oder nicht so vollständig ist, wie Sie es erwartet haben. Natürlich ist es sehr wahrscheinlich, dass die wiederhergestellte Datenbank die Beschädigung wieder enthält, je nachdem, wie und wann sie aufgetreten ist :)

oder eine Möglichkeit, detailliertere Informationen zu diesen Fehlern zu erhalten

Details zu den vier Konsistenzfehlern finden Sie in der DBCC CHECKDBAusgabe vor dem Zusammenfassungsabschnitt am Ende. Sie sollten diese überprüfen, um sicherzustellen, dass Sie das Problem und die Ursachen verstehen, bevor Sie eine Reparatur durchführen.

DBCC CHECKDBMit der WITH NO_INFOMSGSOption können Sie die Ausgabemenge reduzieren .

Fügen Sie die DBCCDetails der Fehlermeldung zu Ihrer Frage hinzu, wenn Sie Hilfe bei der Analyse der Fehler benötigen. Es ist wichtig, alle zugrunde liegenden Hardwareprobleme zu identifizieren und zu beheben, die die Beschädigung verursacht haben könnten.

Abhängig von den Details der Beschädigung gibt es möglicherweise andere Möglichkeiten, um die Probleme zu beheben (z. B. die manuelle Neuerstellung eines nicht gruppierten Index).

Wenn die Reparatur oder Wiederherstellung erfolgreich ist, müssen Sie die Datenbank erneut DBCC CHECKDBmit den umfassendsten Überprüfungen überprüfen, die von Ihrer Version von SQL Server unterstützt werden.

Paul White 9
quelle
4

Für Ihre Frage denke ich, dass ein wichtiger Punkt beim Wiederherstellen von einem bekannten gültigen Backup übersehen wird, daher würde ich diesen Punkt ebenfalls hinzufügen.

Obwohl REPAIR_REBUILD als Mindestreparaturstufe vorgeschlagen wird und in Ihrem Fall möglicherweise funktioniert, müssen Sie wissen, dass beim Ausführen vonparatur_rebuild nicht garantiert werden kann, dass Ihr Problem gelöst und Beschädigungen beseitigt werden. In diesem Fall ist eine Wiederherstellung aus dem Backup eine gute Option. Sie könnenparatur_rebuild innerhalb einer Transaktion verwenden und die Änderungen anzeigen, wenn Sie damit einverstanden sind. Andernfalls wird ein Rollback durchgeführt. Unten ist, was BOL Artikel sagt

Da DBCC CHECKDB mit einer der REPAIR-Optionen vollständig protokolliert und wiederherstellbar ist, empfiehlt Microsoft einem Benutzer immer, CHECKDB mit allen REPAIR-Optionen innerhalb einer Transaktion zu verwenden (führen Sie BEGIN TRANSACTION aus, bevor Sie den Befehl ausführen), damit der Benutzer bestätigen kann, dass er akzeptieren möchte die Ergebnisse der Operation. Anschließend kann der Benutzer COMMIT TRANSACTION ausführen, um alle durch den Reparaturvorgang ausgeführten Arbeiten festzuschreiben. Wenn der Benutzer die Ergebnisse des Vorgangs nicht akzeptieren möchte, kann er eine ROLLBACK-TRANSAKTION ausführen, um die Auswirkungen der Reparaturvorgänge rückgängig zu machen.

Um Fehler zu beheben, empfehlen wir die Wiederherstellung aus einer Sicherung. Bei Reparaturvorgängen werden keine der Einschränkungen berücksichtigt, die für oder zwischen Tabellen bestehen können. Wenn die angegebene Tabelle an einer oder mehreren Einschränkungen beteiligt ist, empfehlen wir, DBCC CHECKCONSTRAINTS nach einem Reparaturvorgang auszuführen. Wenn Sie REPAIR verwenden müssen, führen Sie DBCC CHECKDB ohne Reparaturoption aus, um die zu verwendende Reparaturstufe zu ermitteln. Wenn Sie die Ebene REPAIR_ALLOW_DATA_LOSS verwenden, empfehlen wir, dass Sie die Datenbank sichern, bevor Sie DBCC CHECKDB mit dieser Option ausführen.

Wenn es eine solche Einschränkung gibt, können Sie auch die Idee einer Wiederherstellung aus einer gültigen Sicherung in Betracht ziehen. Zuvor müssen Sie die Wiederherstellung nur für die Sicherung überprüfen , die Sie wiederherstellen möchten , um zu überprüfen, ob die Sicherung konsistent ist. Sie müssen auch beachten, dass nur eine erfolgreiche Wiederherstellung gewährleisten kann, dass die Sicherung in ALLEN Formaten konsistent ist

Zuletzt müssen Sie die SQL Server-Fehlerprotokolle und die Windows-Ereignisanzeige überprüfen, um herauszufinden, warum überhaupt Inkonsistenzen aufgetreten sind. Viel Zeit ist schlechte Hardware die Ursache.

Shanky
quelle