Für den Administrator

Database reopen in read-write mode failed

In der Protokolldatei der Datenbank findet sich der Eintrag Database reopen in read-write mode failed (File sharing violation). Was bedeutet diese Fehler-Meldung?

Damit es zu dieser Meldung kommen kann, muss sich die Datenbank im Nur-Lese-Modus befinden. Das ist zum Beispiel der Fall, wenn zwecks Sicherung der Datenbank ein Backup-Ereignis ausgelöst wurde. Ist die Datenbank zum Zeitpunkt des Starts eines Sicherungsereignisses geöffnet, werden alle abgeschlossenen Transaktionen in die Datenbank übertragen. Anschließend schließt der CONZEPT 16-Server die Datenbank und öffnet diese im Nur-Lese-Modus. Das ist notwendig, damit die Datenbank im laufenden Betrieb in einem konsistenten Zustand kopiert oder von einer Sicherungs-Software verarbeitet werden kann.
Bei Erreichen des Endes eines Backup-Ereignisses, versucht der CONZEPT 16-Server die Datenbank wieder im Schreib/Lese-Modus zu öffnen. Dazu benötigt der Server den exklusiven Zugriff auf die Datenbankdatei. Erhält der CONZEPT 16-Server diesen exklusiven Zugriff nicht, da noch ein Prozess lesend auf die Datenbank zugreift, gibt die von CONZEPT 16 verwendete Windows-API den Fehler ERROR_SHARING_VIOLATION zurück.
Der Server schreibt daraufhin die oben erwähnte Meldung in das Protokoll. Anschließend versucht der CONZEPT 16-Server die Datenbank im Intervall von einer Sekunde exklusiv zu öffnen. Ein Mißlingen führt dann allerdings nicht mehr zu einem Protokolleintrag. Daher ist es wichtig, nach Kenntnisnahme des Fehlers den aktuellen Status der Datenbank zu überprüfen.
Erfahrungsgemäß kommen zwei Ursachen in Betracht:
Das vorgegebene Zeitfenster für das Sicherungsereignis ist zu knapp bemessen.
Die Zeit, die für das Kopieren oder Sichern der Datenbank benötigt wird, reicht über das Ende des Ereignisses hinaus.
Eine mögliche Abhilfe besteht darin, die Dauer des Backup-Ereignisses mit einem entsprechenden Sicherheitsaufschlag zu versehen. Da während eines Sicherungsereignisses keine Updates in die Datenbank geschrieben werden, sollte die Dauer des Backup-Ereignisses so kurz wie möglich gehalten werden.
Grundsätzlich empfiehlt es sich die Datenbank über das CONZEPT 16-Script-Utility in den Backup-Modus zu versetzen. Datensicherungs-Programme unterstützen meist das Ausführen von Script-Dateien. So lässt sich zu Beginn der Sicherung der Backup-Modus ein- und am Ende wieder ausschalten.
Das Script-Utility ist auch in der Lage eine Datenbank im laufendem Betrieb zu kopieren. Bei Angabe der Option area_copy wird das Sicherungsereignis gestartet und die Datenbank in das angegebene Verzeichnis kopiert. Nach dem Kopiervorgang wird das Sicherungsereignis automatisch beendet.
Beispiel:
c16_serv_cmd_win.exe area_copy MyDatabase d:\backup\ -time=01:00 -ignore_active -options=y

Neben dem CONZPT 16-Server hat noch ein weiterer Prozess die Datenbank im Zugriff
Damit die Datenbank aus dem Nur-Lese-Modus geholt werden kann, muss der Prozess, welcher die Datenbank im Zugriff hat, ermittelt und beendet werden. Als Hilfsmittel kann die Microsoft Management Konsole herangezogen werden. Hier können alle Dateien angezeigt werden, die auf dem Server über Freigaben geöffnet sind. Da im Normfall über das Netzwerk kein Zugriff auf das Datenbankverzeichnis besteht, ist die Management Konsole nur bedingt hilfreich.
Um festzustellen, ob ein lokaler Prozess auf die Datenbank zugreift, bieten sich Programme wie zum Beispiel Process Explorer an. Der Process Explorer ist ein Freeware-Programm das von Windows Sysinternals entwickelt wird.

Keine Kommentare

Kommentar abgeben