"Eine differenzielle Sicherung für die Datenbank" myDb "kann nicht durchgeführt werden, da keine aktuelle Datenbanksicherung vorhanden ist."

8

Ich habe ein ziemlich häufiges Problem, wenn ich versuche, eine differenzielle Sicherung durchzuführen. Wir haben einen SQL Server 2008-Standard (64 Bit) und verwenden Litespeed v 5.0.2.0, um unsere Backups zu erstellen. Wir führen einmal pro Woche vollständige Backups und täglich ein Differential durch. Das Problem ist, dass jedes Mal, wenn ich versuche, ein Diff-Backup zu erstellen, die folgende Fehlermeldung angezeigt wird:

Das Öffnen des VDI ist aufgrund des angeforderten Abbruchs
fehlgeschlagen. Die Sicherungsdatenbank wird abnormal beendet.

Es kann keine differenzielle Sicherung für die Datenbank "myDb" durchgeführt werden, da keine aktuelle Datenbanksicherung vorhanden ist. Führen Sie eine vollständige Datenbanksicherung durch, indem Sie BACKUP DATABASE erneut ausgeben und die Option WITH DIFFERENTIAL weglassen.

Das Problem ist, dass ich zu 100% weiß, dass ich ein vollständiges Backup habe, weil ich es nur doppelt überprüft habe. Nur einmal konnte ich ein Diff-Backup erstellen, und dann habe ich es sofort erstellt, nachdem ich ein vollständiges Backup erstellt hatte.

Ich habe mich umgesehen und festgestellt, dass dies ziemlich häufig ist (obwohl meistens mit SQL 2005) und eine Lösung, die viele Leute vorschlagen und die ich noch nicht versucht habe, darin besteht, den SQL Server VSS Writer-Dienst zu deaktivieren. Das Problem dabei ist # 1 Ich denke, ich brauche diesen Dienst möglicherweise, da ich eine Backup-Software eines Drittanbieters verwende, und # 2 Ich bin mir nicht sicher, was der Dienst genau tut und möchte ihn nicht einfach so deaktivieren.

Hat jemand von Ihnen jemals dieses Problem erlebt und wie haben Sie es behoben?

Vielen Dank,

user44127
quelle

Antworten:

7

Führen Sie VSS-Sicherungen auf dem Server (NTbackup, BE usw.) für andere Dinge als die SQL-Daten aus? Nach diesem können die SQL differentielle Backups für ungültig erklärt werden , wenn eine Backup - Software VSS für Schnappschüsse verwendet.

Soweit ich weiß, verwendet LS nicht VSS, wie Nick sagte. Laut diesem Thread bestand der Fix darin, den SQL Writer-Dienst zu deaktivieren.

Update basierend auf Kommentaren:

Da Sie NTbackup verwenden, um andere Dateien auf dem Server zu sichern, besteht die Lösung darin, den SQL Writer-Dienst zu deaktivieren.

Wenn NTbackup ausgeführt wird, werden ALLE verfügbaren VSS-Writer aufgerufen , auch wenn Sie sie nicht benötigen. Dies bedeutet, dass der SQL-Writer die Datenbank in einen konsistenten Zustand versetzt (Cache auf Festplatte leeren), während der Snapshot erstellt wird. Die Datenbank glaubt dann, dass sie gesichert wurde, auch wenn Sie die Informationen nicht von der Schattenkopie kopiert haben. Dies ist es, was Ihre Backups zerstört.

Eine Sache, die Sie überprüfen können, um festzustellen, ob VSS für die DBs ausgeführt wird (was ich sicher bin und die Kette unterbricht), ist das SQL-Protokoll (ich denke, es befindet sich im Fehlerprotokoll). Während der Ausführung Ihrer NTbackup-Jobs sollten Einfrier- / Auftauereignisse angezeigt werden.

Holocryptic
quelle
Es gibt einige geplante Aufgaben, die ntbackup.exe verwenden, um bestimmte Ordner auf dem Server zu sichern. Würde das Deaktivieren des SQL VSS-Writers diese ntbackup-Aufgaben nicht durcheinander bringen? Danke ...
user44127
@krimerd, nein, es würde den Backups nicht schaden. Da Sie LS für die SQL-Sicherungen verwenden, sollten Sie die Verzeichnisse, die die DBs enthalten, trotzdem ausschließen. Wenn NTbackup ausgeführt wird, werden alle verfügbaren VSS-Writer aufgerufen, unabhängig davon, ob Sie sie verwenden möchten oder nicht. Das Deaktivieren des SQL-Writers schadet Ihnen in diesem Fall nicht.
Holocryptic
Ich könnte es versuchen, aber zuerst möchte ich sicherstellen, dass dies der Grund für den Fehler ist. Ich werde die ntbackup-Aufgaben deaktivieren, eine vollständige SQL-Sicherung durchführen und prüfen, ob beim Versuch, eine diff-Sicherung durchzuführen, Fehler auftreten. Wenn ich den Fehler nicht erhalte, kann ich mit ziemlicher Sicherheit sagen, dass das ntbackup das Problem verursacht hat. Danke Holocryptic.
user44127
@ Krimerd, kein Problem. Eine Sache, die Sie überprüfen können, um festzustellen, ob VSS für die DBs ausgeführt wird (was ich sicher bin und die Kette unterbricht), ist das SQL-Protokoll (ich denke, es befindet sich im Fehlerprotokoll). Während der Ausführung Ihrer NTbackup-Jobs sollten Einfrier- / Auftauereignisse angezeigt werden.
Holocryptic
Holocryptic, Sie haben Recht ... Ich habe gerade die SQL-Protokolle überprüft und zu dem Zeitpunkt, an dem die Ausführung der ntbackup-Aufgabe geplant ist, werden mehrere Protokolle (eines für jede Datenbank) angezeigt, von denen alle "Backup" als Quelle und "Typ" haben = virtual_device ". Zu diesen Zeiten sind keine Sicherungsjobs geplant, und zu diesen Zeiten hat niemand manuell Sicherungen durchgeführt. Das einzige, was noch übrig ist, ist die ntbackup-Aufgabe. Dies ist wenig seltsam, da die zu diesem Zeitpunkt geplante ntbackup nur eine Sicherung durchführt Ordner und ich verstehe nicht, warum es Datenbanken oder SQL Server im Allgemeinen berühren würde ...
Nochmals vielen
1

Es ist ein paar Jahre her, seit ich Lichtgeschwindigkeit verwendet habe, also hat sich dies möglicherweise geändert, aber bietet die Lichtgeschwindigkeit keine eigenen erweiterten gespeicherten Prozeduren für die Durchführung von Sicherungen? In diesem Fall sollten Sie diese aufrufen, um ein Differential zu erstellen. Sie sollten wahrscheinlich nicht die nativen BACKUP DATABASE-Befehle aufrufen. Ich glaube nicht, dass Sie native / Lichtgeschwindigkeits-Backups mischen und anpassen können.

Ich habe versucht, in Quests Online-Produktdokument zu stöbern, aber leider müssen Sie Kunde sein.

Aus Sicht von SQL Server für native Sicherungen können Sie kein Differential erstellen, wenn Sie noch nie eine vollständige Sicherung erstellt haben.

Der VSS-Dienst ermöglicht Sicherungen auf Dateiebene von SQL Server über Volume Shadow Copy. Wenn Sie Lightspeed für Sicherungen verwenden und das SQL Server-Verzeichnis von Sicherungen auf Serverebene (OS) ausschließen, ist es wahrscheinlich in Ordnung, dies zu deaktivieren. Dies hat wahrscheinlich nichts damit zu tun, dass keine differenziellen Sicherungen durchgeführt werden können.

Behebt das Neustarten der SQL Server-Instanz das Problem? Wenn ja, können Sie bei steigenden SQL - Server aussehen wollen MemToLeave diese heraus überprüfen .

Nick Kavadias
quelle
Danke für deine Antwort Nick. Sie haben Recht, LS stellt seine eigenen Storeprocs zur Verfügung, und ich rufe diese aus meinem SSIS-Wartungspaket auf. Ich erhalte jedoch immer noch den oben genannten Fehler.
Nochmals vielen
sieht aus wie ein Quest-spezifisches Problem!
Nick Kavadias
Ja, es könnte sein, aber alle anderen Leute bekommen den gleichen Fehler, wenn sie die nativen Backups machen.
Nochmals vielen
1

Die häufigste Ursache für dieses Problem ist, dass Sie eine andere Sicherungssoftware (NTBackup, BE, Bacula usw.) haben, die einen Snapshot (VSS-Kopien - Volume Shadow Copy) Ihrer Datenbank erstellt. Dies kann dazu führen, dass die Sicherungskette erstellt wird Ihre vorherigen DIFFERENTIAL-Sicherungen sind fehlerhaft und ungültig. Wenn Ihr aktueller DIFFERENTIAL-Sicherungsprozess gestartet wird, schlägt dies fehl, da nicht festgestellt werden kann, dass zuvor eine erste vollständige Sicherung oder eine andere DIFFERENTIAL-Sicherung durchgeführt wurde.

Zunächst müssen Sie herausfinden, welches Software-Tool Snapshot-Backups Ihrer Datenbank erstellt, da Sie dieses Problem auf verschiedene Arten lösen können. Betrachten wir den häufigsten Fall, wenn Snapshot-Backups mit Hilfe von NTBackup erstellt werden. Die Lösung für NTBackup Überprüfen Sie in erster Linie SQL Server VSS Writer im Menü Dienst. Es müssen die folgenden Einstellungen vorgenommen werden: Starttyp: Manuell und der Dienst muss gestoppt werden. Wenn der SQL Server VSS Writer-Dienst ausgeführt wird und ein Snapshot erstellt wird, wird das vollständige Wiederherstellungsmodell blockiert und die Sicherungskette wird unterbrochen. Um die Einstellungen von SQL Server VSS Writer zu ändern, gehen Sie zum "Sternmenü" und suchen Sie im geöffneten Fenster nach "Dienste". Wählen Sie "SQL Server VSS Writer".

Klicken Sie mit der rechten Maustaste auf den Dienst und wählen Sie "Eigenschaften". Stellen Sie im geöffneten Fenster den "Starttyp" auf "Manuell" ein und drücken Sie im Abschnitt "Dienststatus" auf "Stopp", um sicherzustellen, dass der Dienst nach dem Neustart nicht automatisch ausgeführt wird Computer und klicken Sie auf "OK", um alle Änderungen zu übernehmen.

Olek Nilson
quelle
0

Ich hatte das gleiche Problem, obwohl Bacula Snapshots der Datenbank sowie meine eigenen SQL Server-Backups erstellt hatte. Es gibt eine Art Fehler, der dies bei einer Teilmenge der DBs auf dem Server verursacht hat, was am ärgerlichsten war. Am Ende bestand meine Lösung darin, die Sicherungszeitpunkte so zu ändern, dass nach der Bacula-Sicherung eine SQL-Sicherung ausgeführt wurde, um sicherzustellen, dass die internen Flags der SQL Server korrekt zurückgesetzt wurden, um festzustellen, dass eine vollständige Sicherung durchgeführt wurde. Das war 2005 - ich denke, die gleichen VDI-Probleme betreffen auch 2008.

Zum Verweis hier war meine frühere Frage.

Chris W.
quelle
Ja, es sieht aus wie die gleiche Situation, in der ich mich befinde. Der einzige Unterschied besteht darin, dass sich meine Datenbanken im einfachen Wiederherstellungsmodus befinden (da ich keine tlog-Sicherungen durchführen muss) und in meinem Fall alle 4 Datenbanken, die ich bin Der Versuch, eine Sicherung durchzuführen, schlägt mit demselben Fehler fehl. Wenn nichts anderes, werde ich versuchen, den VSS-Writer zu stoppen und zu sehen, ob das hilft und hoffentlich keine anderen Probleme verursacht. Danke Chris
user44127