22 Nov 2016 | Armin Odorfer

In einem Datenbanksystem ist es wichtig, dass stets genügend freier Speicher auf der Datenbankpartition vorhanden ist. Neben einem regelmäßigen Datenbank-Backup ist daher auch das Monitoring des freien Speicherplatzes anzuraten.

Läuft die Datenbankpartition voll, versetzt der Microsoft SQL-Server die Datenbank, die nicht mehr vergrößert werden kann, in den Status „Recovery Pending“. Dies bedeutet, dass SQL die Datenbank nicht öffnen und auch die Datenbank-Dateien nicht sperren kann. Der Zustand kann mit einer Datenbank im Offlinemodus verglichen werden.

5

Mit den folgenden Schritten lässt sich eine Datenbank (in diesem Beispiel: MX_MSCRM) in vielen Fällen wieder reparieren:

• Vergrößern Sie den freien Speicherplatz.

• Legen Sie Backups der Datenbankdateien *.mdf (Primary Data File), *.ndf (Secondary Data Files, falls vorhanden) und *.ldf (Log Files) an.

• Versetzen Sie die Datenbank in den Modus „Online”:
ALTER DATABASE MX_MSCRM SET ONLINE

• Lassen Sie CheckDB über die betroffene Datenbank laufen (nur Warnungen).
DBCC CHECKDB(‚MX_MSCRM‘) WITH NO_INFOMSGSLäuft CheckDB ohne Warnung durch, muss die Datenbank nicht repariert werden. Führen Sie andernfalls Schritt 5 aus.

• Versetzten Sie die Datenbank vor der Reparatur in den Einzelbenutzermodus:
ALTER DATABASE MX_MSCRM SET SINGLE_USER

• Anschließend gibt es verschiedene Reparaturmodi. Normalerweise beginnt man mit „REPAIR_REBUILD“:
DBCC CHECKDB(‚MX_MSCRM‘,REPAIR_REBUILD)Wenn die Reparatur gelingt, kann die Datenbank wieder in den Mehrbenutzermodus versetzt werden (siehe Schritt 9).

• Andernfalls folgt der nächste Reparaturmodus „REPAIR_ALLOW_DATA_LOSS“ (bitte beachten Sie, dass hierbei (wie der Name schon sagt) Daten verloren gehen können):
DBCC CHECKDB(‚MX_MSCRM‘,REPAIR_ALLOW_DATA_LOSS)War die Reparatur erfolgreich, kann die Datenbank in den Mehrbenutzermodus versetzt werden (siehe Punkt 9).

• Zuletzt kann man die Reparatur über den „EMERGENCY“-Modus versuchen:
ALTER DATABASE MX_MSCRM SET EMERGENCY
ALTER DATABASE MX_MSCRM SET SINGLE_USER
DBCC CHECKDB (MX_MSCRM,REPAIR_ALLOW_DATA_LOSS) WITH
NO_INFOMSGS,ALL_ERRORMSGS

• Versetzen Sie die Datenbank in den Status „Online“ und aktivieren Sie den Mehrbenutzermodus:
ALTER DATABASE MX_MSCRM SET ONLINE
ALTER DATABASE MX_MSCRM SET MULTI_USERHat alles geklappt, ist nach einem Refresh des Datenbankbaums der Status „Recovery Pending” verschwunden.

6

Ich stimme zu, dass diese Seite Cookies fur Analysen, personalisierte Inhalte und Werbung verwendet.