Über das Wochenende hat eine von mir ausgeführte Website die Funktion eingestellt und bei jeder Anforderung der Website den folgenden Fehler in der Ereignisanzeige aufgezeichnet:
Ereignis-ID: 9001
Das Protokoll für die Datenbank ' Datenbankname ' ist nicht verfügbar. Überprüfen Sie das Ereignisprotokoll auf verwandte Fehlermeldungen. Beheben Sie alle Fehler und starten Sie die Datenbank neu.
Die Website wird auf einem dedizierten Server gehostet, so dass ich in der Lage bin, RDP in den Server einzuspielen und herumzustöbern. Die LDF
Datei für die Datenbank ist im C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
Ordner vorhanden. Wenn Sie jedoch versuchen, mit der Datenbank von Management Studio aus zu arbeiten, wird in einem Dialogfeld der gleiche Fehler gemeldet - 9001: Das Protokoll für die Datenbank ist nicht verfügbar.
Dies ist das erste Mal, dass ich diesen Fehler erhalte, und ich hoste diese Site (und andere) seit über zwei Jahren auf diesem dedizierten Webserver.
Nach meinem Verständnis weist dieser Fehler auf eine beschädigte Protokolldatei hin. Ich konnte die Website wieder online stellen, indem ich die Datenbank getrennt und dann ein Backup von vor ein paar Tagen wiederhergestellt habe. Ich befürchte jedoch, dass dieser Fehler auf ein unheimlicheres Problem hinweist, nämlich einen Festplattenfehler.
Ich schickte eine E-Mail an den Support des Webhosting-Unternehmens und dies war die Antwort:
Das Ereignisprotokoll enthält anscheinend keine weiteren Hinweise auf die Ursache. Daher ist das Protokoll möglicherweise beschädigt. Gegenwärtig sind 87% der Speicherressourcen belegt, was sich ebenfalls auswirken kann, aber unwahrscheinlich ist.
Kann das Protokoll nur "beschädigt werden?"
Meine Frage: Was sind die nächsten Schritte, um dieses Problem zu diagnostizieren? Wie kann ich feststellen, ob es sich tatsächlich um ein Hardwareproblem handelt? Und wenn ja, gibt es Optionen, die über das Ersetzen der Festplatte hinausgehen?
Vielen Dank
quelle
Ich konnte dieses Problem lösen, indem ich die Datenbank in Management Studio offline und dann sofort wieder online stellte.
dbcc checkdb
hatte Fehler geworfen, die danach behoben wurden. Ich kann nicht sagen , warum dies funktioniert nur , dass es tat Arbeit.quelle
Ich hatte dieses Problem kürzlich auch und nach Bergen der Forschung scheint es üblich zu sein, wenn eine Datenbank auf AUTO CLOSE eingestellt ist. Ich habe alle Datenbanken auf AUTO CLOSE = FALSE gesetzt. Dies begann mit einer Datenbank, ging dann auf zwei über und die nächste war auf allen. Ich habe einfach den SQL Server-Instanzdienst neu gestartet, anstatt die Datenbanken wiederherzustellen. Eine andere Möglichkeit, das Symptom zu beheben, besteht darin, die problematische Datenbank offline zu schalten und wieder online zu schalten.
quelle
MS SQL schaltet die Protokolle einer betroffenen Datenbank offline, um eine Beschädigung der Datenbank zu vermeiden. Deshalb erhalten Sie den 9001-Fehler.
Wenn Sie die betroffene Datenbank offline / online schalten, aktiviert MS SQL die betroffenen Datenbankprotokolle, bis der Fehler erneut auftritt.
Eine andere Möglichkeit, dies zu lösen, besteht darin, die Option Auto_Close auf OFF zu setzen
http://sqlmag.com/blog/worst-practice-allowing-autoclose-sql-server-databases
quelle
Ich werde raten / hoffen, dass Sie ein Raid für die Festplatte Ihres SQL-Servers haben. Wenn Sie Hardwareprobleme vermuten, ist das allererste, was ich tun würde, Ihre RAID-Wartungs- / Diagnosetools auszuführen.
Die zweite Sache (wahrscheinlich gleichzeitig, wenn Sie können) ist die Ausführung von dbcc checkdb in der Datenbank (möglicherweise auch in Ihren Systemdatenbanken).
quelle
Ok, mach als erstes ein Backup deines Logs und deiner mdf-Dateien auf einem ganz anderen Laufwerk. SCHNELL! (Dateikopie)
Versuchen Sie auch, eine vollständige Datenbanksicherung durchzuführen.
Versuchen Sie als Nächstes Folgendes. Trennen Sie Ihre aktuelle Datenbank, wenn Sie die Protokolldatei löschen können, oder verschieben Sie sie an einen anderen Speicherort auf der Festplatte. Schließen Sie die Datenbank erneut an, und sie wird in der Benutzeroberfläche mit einer Protokolldatei angezeigt. Klicken Sie auf Entfernen (oder Löschen) für die Protokolldatei, damit sie nicht angezeigt wird, und klicken Sie dann auf OK. Durch das Anhängen ohne Protokoll wird erzwungen, dass eine Protokolldatei für die Datenbank am Standardspeicherort erstellt wird.
Gib mir Bescheid.
quelle
Ja, ich habe auch das gleiche Problem, es handelte sich um den tempDb-Fehler 9001, dh das Protokoll ist nicht verfügbar. Wir haben die Dienste neu gestartet und alles war in Ordnung.
Das Problem dahinter war das SAN- oder Speicherproblem, während der E / A-Schreibvorgang länger als 15 Sekunden nicht ausgeführt werden konnte.
quelle
Ich hatte gestern den gleichen Fehler erhalten: "Das Protokoll für die Datenbank '%' ist nicht verfügbar. Schwerwiegender Fehler 9001, Meldung 21. Bitte wenden Sie sich an Ihren Administrator."
Problemumgehung - Ich habe die 'TempDB' überprüft, aber auf die restlichen Systemdatenbanken konnte nicht auf diese zugegriffen werden. Bevor ich mich für die Reparaturoption entschieden habe, habe ich einfach die SQL-Dienste für diese Instanz neu gestartet und das Problem wurde behoben :) :)
quelle
Ich habe gesehen, dass dies passiert, wenn kein Speicherplatz für die Protokollerweiterung verfügbar ist. können Sie überprüfen, ob auf dem C: \ ausreichend Speicherplatz vorhanden ist und ob Ihre Protokolle verwaltet werden, dh, Sie werden gesichert, wenn Sie sich im vollständigen Wiederherstellungsmodus befinden.
Ich würde Ihre Ldf's (und MDF's) vom Boot-Volume entfernen, wenn Sie die Option haben.
quelle