In diesem Artikel erfahren Sie, wie Sie zweifelhafte SQL Server-Datenbanken lösen. Manchmal wird eine Datenbank versehentlich als zweifelhaft markiert. 1. Stellen Sie zunächst sicher, dass die MDF- und LDF-Dateien gesichert wurden.
2. Erstellen Sie eine neue Datenbank mit demselben Namen in SQL Server und stoppen Sie dann den SQL Server-Dienst.
3. Überschreiben Sie die .mdf- und .ldf-Dateien, die der neuen Datenbank entsprechen, mit den ursprünglichen .mdf- und .ldf-Dateien.
4. Starten Sie den SQL Server-Dienst neu. Sie sollten sehen, dass sich die Datenbank im Status „Verdächtig“ befindet.
5. Führen Sie den folgenden Befehl im SQL Query Analyzer aus, um die Aktualisierung der Systemtabellen zu ermöglichen:
Verwenden Sie mastergosp_configure 'Updates zulassen',1 neu konfigurieren mit overridego
6. Versetzen Sie diese Datenbank in den Notfallmodus:
Update sysdatabases set status = 32768 where name = 'db_name'go
7. Verwenden Sie den Befehl DBCC CHECKDB, um die Datenbank auf Fehler zu prüfen:
DBCC CHECKDB('db_name')GO
8. Wenn der Befehl DBCC CHECKDB fehlschlägt, fahren Sie mit Schritt 10 fort. Andernfalls versetzen Sie die Datenbank in den Einzelbenutzermodus, bevor Sie versuchen, sie zu reparieren:
sp_dboption 'db_name','single user','true'DBCC CHECKDB('db_name', REPAIR_ALLOW_DATA_LOSS)GO
Wenn Sie beim Ausführen des Befehls DBCC CHECKDB('db_name', REPAIR_ALLOW_DATA_LOSS) die Meldung erhalten, dass sich die Datenbank nicht im Einzelbenutzermodus befindet, starten Sie den SQL Server-Dienst neu und versuchen Sie es weiter.
9. Wenn der Befehl DBCC CHECKDB('db_name', REPAIR_ALLOW_DATA_LOSS) fehlschlägt, fahren Sie mit Schritt 10 fort. Andernfalls wird der Fehler in der Datenbank erfolgreich behoben:
Führen Sie den Befehl DBCC CHECKDB('db_name') erneut aus, um zu bestätigen, dass in der Datenbank keine Fehler vorliegen.
Löschen Sie den verdächtigen Status der Datenbank: sp_resetstatus 'db_name'
Löschen Sie den Einzelbenutzermodusstatus der Datenbank: sp_dboption 'db_name','single user','false'
Starten Sie den SQL Server-Dienst neu. Wenn alles normal ist, wurde die Datenbank erfolgreich wiederhergestellt.
10. Wenn das Problem mit den oben genannten Schritten nicht gelöst werden kann, lesen Sie bitte das beigefügte Dokument und versuchen Sie, die Daten in der Datenbank wiederherzustellen, indem Sie das Transaktionsprotokoll neu erstellen. Wenn Sie nur MDF-Dateien haben, ist das Problem komplizierter und wir müssen das Transaktionsprotokoll direkt neu erstellen:
1. Erstellen Sie eine neue Datenbank mit demselben Namen in SQL Server und stoppen Sie dann den SQL Server-Dienst.
2. Überschreiben Sie mit der ursprünglichen LDF-Datei die .mdf-Datei, die der neu erstellten Datenbank entspricht, und löschen Sie deren Protokolldatei (.ldf).
3. Starten Sie den SQL Server-Dienst und versetzen Sie die Datenbank in den Notfallmodus (wie oben: Schritt 5 und Schritt 6).
4. Stoppen Sie den SQL Server-Dienst und starten Sie ihn neu.
5. Führen Sie den folgenden Befehl aus, um die Datenbankprotokolldatei neu zu erstellen: (Das Folgende ist ein Beispiel, Sie müssen Ihren tatsächlichen Datenbanknamen verwenden)
DBCC REBUILD_LOG('cas_db', 'D:cas_dbcas_db_Log.LDF')
6. Ersetzen Sie die Datenbank in den Einzelbenutzermodus.
7. Versuchen Sie es erneut mit dem Befehl DBCC CHECKTABLE oder DBCC CHECKDB, um Fehler in der Datenbank zu überprüfen und zu beheben
-