Version 6.0
BK Begin full backup
| Parameter | Typ | Beschreibung | ||||
| Dieser Befehl benötigt keine Parameter | ||||||
| Funktionsergebnis | Ganzzahl | 0, wenn Ausführung korrekt, sonst | ||||
| Fehlermeldung | ||||||
Beschreibung
Die Funktion BK Begin full backup startet den Sicherungsvorgang von 4D Backup. Sie führt die notwendigen Vorbereitungen zum Sichern der Datenbank aus: Sie wartet ab, bis alle Transaktionen beendet sind und sperrt die Datenbank im Schreibmodus.
Alle 4D Backup Befehle und Funktionen müssen von den Routinen BK Begin full backup bzw. BK Begin mirror update und BK END BACKUP umgeben sein mit Ausnahme von vier autonomen Routinen. Weitere Informationen dazu finden Sie im Abschnitt Struktur der Anweisungen.
BK Begin full backup gibt den Wert 0 zurück, wenn die Ausführung korrekt war. Andernfalls wird eine Fehlernummer zurückgegeben. Weitere Informationen dazu finden Sie in Anhang A, Fehlermeldungen von 4D Backup. Wir empfehlen, den zurückgegebenen Wert systematisch zu überprüfen. Denn, immer wenn BK Begin full backup einen anderen Wert als 0 (Null) zurückgibt, werden alle darauffolgenden Anweisungen nicht ausgeführt.
Während dem Sichern auf die Datenbank zugreifen
Durch die Funktion BK Begin full backup wird der Zugriff auf die Datenbank in folgender Weise eingeschränkt:
Mit 4th Dimension Einzelplatz: Alle Prozesse - außer der Prozeß, der die Sicherung aufgerufen hat - sind in Schlafstatus. Sie werden erst nach Ausführen des Befehls BK END BACKUP wieder freigegeben. So besteht nicht das Risiko, daß die Datenbank während der Sicherung geändert wird.
Hinweis: Mit der Tastenkombination Alt+Umschalttaste+Klick rechte Maustaste unter Windows bzw. ctrl+Wahl-+Umschalttaste+Mausklick auf MacOS können Sie den Sicherungsvorgang bei Bedarf abbrechen.
Mit 4D Server: Die mit 4D Server verbundenen Clients können die Datensätze lesen, jedoch weder ändern noch löschen. Sendet eine Arbeitsstation dem Server die Anweisung, Daten hinzuzufügen, zu ändern oder zu löschen, erscheint die Meldung, daß das Ende der Sicherung abzuwarten ist. Diese Meldung verschwindet, sobald die Datenbank gesichert ist. Die gewünschte Aktion wird dann ausgeführt.
Über die Schaltfläche Operation abbrechen kann der Benutzer die laufende Anweisung annullieren, wenn er nicht das Ende des Sicherungsvorgangs abwarten will.
Stammt die Aktion jedoch von einer Methode, die vor der Sicherung gestartet wurde, sollte die Aktion nicht abgebrochen werden, denn nur die noch nicht ausgeführten Operationen werden annulliert. Eine halbwegs ausgeführte Methode kann in der Logik der Datenbank zu Unstimmigkeiten führen.
Hinweis: Stammt die Aktion in Wartestellung von einer Methode und klickt der Benutzer auf die Schaltfläche Operation abbrechen, gibt 4D den Fehler -9976 zurück.
Der Sicherungsprozeß erscheint auch im Verwaltungsfenster des Servers.
Verwalten der Transaktionen
BK Begin full backup wartet erst ab, bis alle Transaktionen beendet sind. Starten Sie in demselben Prozeß eine Transaktion über den 4D Befehl START TRANSACTION und rufen Sie dann die Funktion BK Begin full backup auf, ohne zuvor die Befehle VALIDATE TRANSACTION bzw. CANCEL TRANSACTION auszuführen, gibt BK Begin full backup den Fehler 1404 zurück.
In diesem Zusammenhang sollten Sie dem Benutzer auch keinen Eingabedialog während einer Transaktion anbieten. Geht nämlich der Benutzer z.B. in Mittag und läßt das über eine Transaktion geöffnete Dialogfenster offen, können Sie die Datenbank nicht sichern. Außerdem wird die Datenbank für alle anderen Benutzer im Schreibmodus gesperrt, bis diese Aktion bestätigt wird.
Es ist also viel geschickter, die Transaktionen nach den Dialogfenstern auszuführen. Dann wird die Transaktion erst gestartet und anschließend bestätigt oder annulliert, wenn der Benutzer seine Operation bestätigt hat. Auf diese Weise optimieren Sie einerseits die allgemeine Funktionsweise Ihrer Datenbank, andererseits verhindern Sie, daß die Sicherung wegen einer vom Benutzer blockierten Transaktion nicht durchgeführt werden kann.
Beachten Sie auch, daß Sie bei gesperrter Datenbank keine Datensätze aktualisieren können, z.B. um Informationen über die Sicherung zu speichern. Das können Sie erst nach Aufrufen des Befehls BK END BACKUP. Zwischen den Anweisungen BK Begin full backup und BK END BACKUP können Sie Datensätze weder ändern, löschen, noch neue hinzufügen.
Beispiele
(1) Hier die einfachste Methode zum Auslösen einer vollständigen Sicherung:
C_INTEGER($vError) $vError:=BK Full backup
(2) Auch diese längere Methode löst die vollständige Sicherung aus:
If(BK Begin full backup=0) `Sicherungsvorgang wird geöffnet If (BK Start copy =0) `Sicherung startet Repeat Until (BK Get state#4) `Ende der Kopie End if BK END BACKUP `Sicherungsvorgang wird beendet End if
(3) Obige Methode läßt sich durch Abfragen evtl. Fehler verbessern:
C_INTEGER($vError;$vState)
$vError:=BK Begin full backup
If ($vError#0)
ALERT("Sicherung läßt sich nicht starten: Fehlernr " +String($vError))
Else
$vError:=BK Start copy
If ($vError#0)
ALERT("Kopie läßt sich nicht starten: Fehlernr " + String($vError))
Else
Repeat
$vState:=BK Get state
Until ($vState#4)
If ($vState#5)
ALERT ("Probleme während der Kopie: Fehlernr " + String($vState))
End if
End if
BK END BACKUP
End if
Referenz
BK Begin mirror update, BK END BACKUP, BK Get state.