SQL Server zeigt die Datenbank in der Wiederherstellung

23

Heute wird nach einem Stromausfall in einer Datenbank (mit Wiederherstellung: voll) "In Wiederherstellung" in SSMS angezeigt. So:

myDatabase (In Wiederherstellung) (Datenbankstatus: Wiederherstellung, Herunterfahren)

Nach Beendigung des "Wiederherstellungsprozesses" zeigt die Datenbank den Namen myDatabase ohne "(In Wiederherstellung)". Ich dachte, das Problem sei gelöst, aber nicht.

Beim Starten der Anwendung, die diese Datenbank verwendet, wird der zusätzliche Text "(In Wiederherstellung)" erneut neben dem Namen meiner Datenbank angezeigt.

Ich habe gewartet, bis der "Wiederherstellungsprozess" abgeschlossen ist, und dann die Datenbank offline geschaltet und wieder online geschaltet.

Ich habe den Server neu gestartet, den Computer neu gestartet und als meine Anwendung ausgeführt wurde, wird der zusätzliche Text erneut angezeigt. In den SQL Server-Protokollen wird mehrmals die Meldung "Datenbank 'myDatabase' wird gestartet" angezeigt. Es scheint, dass die Datenbank funktioniert, weil ich Daten einfügen kann, aber der Status zeigt, dass etwas passiert.

Das Serverprotokoll zeigt nichts Interessantes an. Das einzig Abnormale ist, dass ich 30 Einträge von "Datenbank 'myDatabase' starten" habe.

Ich weiß, dass beim Start des Servers jede Datenbank eine Wiederherstellung durchläuft, bevor sie einsatzbereit ist. In meinem Fall wird die Datenbank jedoch online geschaltet und zeigt dann "myDatabase (In Recovery)" an. Wenn ich die Anwendung schließe, wechselt die Datenbank zu Status: Normal. Das macht mich verrückt.

Ich habe sogar eine neue Instanz von SQL Server installiert und die alte Datenbank "myDatabase" darauf abgelegt. Das Problem tritt immer noch auf.

Wenn ich diese Abfrage ausführe:

SELECT databasepropertyex('nyDatabase', 'STATUS')

Es zeigt die Wiederherstellung, online, verdächtig und das Zurück zu online und dann die Wiederherstellung und so weiter.

Andres
quelle

Antworten:

2

Community-Wiki-Antwort, die ursprünglich als Bearbeitung der Frage des Autors hinterlassen wurde:

Das Problem war, dass die Datenbankeigenschaft aktiviert AutoClosewar.

Die Lösung war, AutoCloseauf falsch zu setzen .

user126897
quelle
16

Ich bin nicht sicher, ob dies zur Lösung des Problems beitragen würde, aber Sie können es ausprobieren.

Lauf:

RESTORE DATABASE YourDatabase WITH RECOVERY

Überprüfen Sie, ob die Datenbank durch das oben beschriebene Verfahren aus dem Wiederherstellungsmodus gebracht wird. Wenn dies nicht der Fall ist, liegt das Problem möglicherweise an einer anderen Stelle.

Können Sie den folgenden Befehl ausführen und feststellen, ob die Datenbank beschädigt ist?

DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS

Wenn eine Beschädigung festgestellt wird, möchten Sie die Datenbank möglicherweise mithilfe von reparieren DBCC CHECKDB

RK Kuppala
quelle
6

Immer wenn Sie eine Datenbank online schalten, wird ein Wiederherstellungsprozess durchgeführt. Ihre Formulierung des Problems verwirrt mich allerdings ein wenig. Wird die Datenbank zu einem anderen Zeitpunkt wiederhergestellt, als wenn sie offline geschaltet wird (entweder nach dem ursprünglichen Stromausfall oder nachdem Sie sie offline und dann wieder online geschaltet haben)? In diesem Fall wird die Datenbank aus einem anderen Grund offline geschaltet. Am besten überprüfen Sie die SQL Server-Protokolle, um zu sehen, was los ist.

Sie sollten auch das Windows-Ereignisprotokoll auf Datenträgerfehler überprüfen. Die Datenbank sollte während des normalen Betriebs nicht gestartet und wiederhergestellt werden.

Ben Thul
quelle