Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Anweisungen » SQL-Anweisungen (A-D)

 

BACKUP-Anweisung

Mit dieser Anweisung sichern Sie eine Datenbank und das Transaktionslog.

Syntax 1 (Sicherungskopie)
BACKUP DATABASE
DIRECTORY Sicherungsverzeichnis
[ WAIT BEFORE START ]
[ WAIT AFTER END ]
[ DBFILE ONLY ]
[ TRANSACTION LOG ONLY ]
[ TRANSACTION LOG RENAME [ MATCH ] ]
[ TRANSACTION LOG TRUNCATE ]
[ ON EXISTING ERROR ]
[ WITH COMMENT Kommentar-Zeichenfolge ]
[ HISTORY { ON | OFF } ]
[ AUTO TUNE WRITERS { ON | OFF } ]
[ WITH CHECKPOINT LOG { AUTO | COPY | NO COPY | RECOVER } ]
Sicherungsverzeichnis : { Zeichenfolge | Variable }
Syntax 2 (Archivsicherung)
BACKUP DATABASE TO Archivstamm
[ WAIT BEFORE START ]
[ WAIT AFTER END ]
[ DBFILE ONLY ]
[ TRANSACTION LOG ONLY ]
[ TRANSACTION LOG RENAME [ MATCH ] ]
[ TRANSACTION LOG TRUNCATE ]
[ ATTENDED { ON | OFF } ]
[ WITH COMMENT Kommentar Zeichenfolge ]
[ HISTORY { ON | OFF } ]
[ WITH CHECKPOINT LOG [ NO ] COPY ]
[ MAX WRITE { Anzahl_von_Schreibern | AUTO } ]
Archivstamm :  { Zeichenfolge | Variable }
Kommentar-Zeichenfolge :   Zeichenfolge
Anzahl_von_Schreibern : Ganzzahl
Parameter
  • DIRECTORY-Klausel   Der Zielspeicherort auf der Festplatte für die Sicherungsdateien, relativ zum aktuellen Verzeichnis des Datenbankservers beim Start. Wenn das Verzeichnis nicht existiert, wird es erstellt. Wenn Sie eine leere Zeichenfolge als Verzeichnis eingeben, können Sie das Log umbenennen oder verkürzen, ohne es vorher zu kopieren. Verwenden Sie diese Klausel nicht, wenn Sie mit einer Datenbankspiegelung arbeiten. Weitere Hinweise finden Sie unter Datenbankspiegelung und Transaktionslogdateien.

  • WAIT BEFORE START-Klausel   Mit dieser Klausel stellen Sie sicher, dass die Sicherungskopie der Datenbank keine Informationen enthält, die für die Wiederherstellung erforderlich sind. Insbesondere stellen Sie damit sicher, dass das Rollback-Log für jede Verbindung leer ist.

    Wenn eine Sicherung mit dieser Klausel ausgeführt wird, können Sie die Sicherungskopie der Datenbank im schreibgeschützten Modus starten und validieren. Indem Sie die Validierung der Sicherungsdatenbank aktivieren, können Sie verhindern, dass eine zweite Kopie der Datenbank hergestellt wird.

  • WAIT AFTER END-Klausel   Verwenden Sie diese Klausel, wenn das Transaktionslog umbenannt oder gekürzt wird. Auf diese Weise wird sichergestellt, dass alle Transaktionen abgeschlossen sind, bevor das Log umbenannt oder gekürzt wird. Wenn diese Klausel verwendet wird, müssen alle offenen Transaktionen im Rahmen sonstiger Verbindungen festgeschrieben oder zurückgesetzt worden sein, bevor der Sicherungsvorgang abgeschlossen werden kann.

  • DBFILE ONLY-Klausel   Verwenden Sie diese Klausel, um Sicherungskopien von der Hauptdatenbankdatei und dazugehörigen DBSpaces anzufertigen. Das Transaktionslog wird nicht kopiert. Sie können die DBFILE ONLY-Klausel nicht zusammen mit den TRANSACTION LOG RENAME- oder TRANSACTION LOG TRUNCATE-Klauseln verwenden.

  • TRANSACTION LOG ONLY-Klausel   Verwenden Sie diese Klausel, um eine Sicherungskopie vom Transaktionslog anzufertigen. Es werden keine anderen Datenbankdateien kopiert.

  • TRANSACTION LOG RENAME [MATCH]-Klausel   Diese Klausel veranlasst den Datenbankserver, das aktuelle Transaktionslog nach Erstellen der Sicherungskopie umzubenennen. Wenn das Schlüsselwort MATCH ausgelassen wird, erhält die Sicherungskopie des Logs denselben Namen wie das aktuelle Transaktionslog für die Datenbank. Wenn Sie das Schlüsselwort MATCH angeben, erhält die Sicherungskopie des Transaktionslogs einen Namen mit dem Format JJMMTTnn.log, um der umbenannten Kopie des aktuellen Transaktionslogs zu entsprechen. Mit dem Schlüsselwort MATCH kann dieselbe Anweisung mehrmals ausgeführt werden, ohne dass alte Daten überschrieben werden.

  • TRANSACTION LOG TRUNCATE-Klausel   Mit dieser Klausel wird das aktuelle Transaktionslog nach Erstellung der Sicherungskopie verkürzt und neu gestartet. Verwenden Sie diese Klausel nicht, wenn Sie mit einer Datenbankspiegelung arbeiten. Weitere Hinweise finden Sie unter Datenbankspiegelung und Transaktionslogdateien.

  • Archivstamm-Klausel   Der Dateiname oder Devicename des Bandlaufwerks für die Archivdatei

    Um eine Sicherung auf Band vorzunehmen, müssen Sie den Devicenamen des Bandlaufwerks angeben. Unter NetWare ist z.B. das erste Bandlaufwerk \\.\tape0. Die an das Ende des Archivdateinamens angehängte Nummer wird jedesmal erhöht, wenn Sie eine Archivsicherung durchführen.

    Das Backslashzeichen (\) ist ein Escapezeichen in SQL-Zeichenfolgen, weshalb jeder Backslash verdoppelt werden muss. Weitere Informationen zu Escapezeichen und Zeichenfolgen finden Sie unter Zeichenfolgen.

  • ON EXISTING ERROR-Klausel   Diese Klausel betrifft nur Sicherungskopien. Standardmäßig werden vorhandene Dateien überschrieben, wenn Sie eine BACKUP DATABASE-Anweisung ausführen. Bei Verwendung dieser Klausel kommt es zu einem Fehler, wenn eine der Dateien, die von der Sicherung erstellt werden sollen, bereits vorhanden ist.

  • ATTENDED-Klausel   Diese Klausel gilt nur beim Sichern auf ein Bandgerät. ATTENDED ON (Standardwert) zeigt an, dass eine Person verfügbar ist, die den Status des Bandlaufwerks überwacht und bei Bedarf ein neues Band ins Laufwerk einlegt. Wenn das Bandlaufwerk bedient werden muss, wird eine Meldung an die Anwendung geschickt, welche die BACKUP DATABASE-Anweisung aufgerufen hat. Der Datenbankserver wartet dann, bis das Laufwerk bereit ist. Dies ist z.B. der Fall, wenn ein neues Band erforderlich ist.

    Wenn ATTENDED OFF angegeben wird und ein neues Band erforderlich oder das Laufwerk nicht bereit ist, wird keine Meldung gesendet und ein Fehler wird ausgegeben.

  • WITH COMMENT-Klausel   Diese Klausel zeichnet einen Kommentar in der Sicherungsverlaufsdatei (backup.syb) auf. Bei Archivsicherungen wird der Kommentar auch in der Archivdatei aufgezeichnet.

  • HISTORY-Klausel   Standardmäßig fügt jeder Sicherungsvorgang eine Zeile in der Datei backup.syb hinzu. Sie können Updates in der Datei backup.syb verhindern, indem Sie HISTORY OFF angeben. Dies ist z.B. unter folgenden Bedingungen angebracht:

    • Sie führen häufig Sicherungen durch.
    • Es gibt keine Prozedur, um die backup.syb-Datei regelmäßig zu archivieren oder zu löschen.
    • Der Speicherplatz ist sehr beschränkt.

  • AUTO TUNE WRITERS-Klausel   Wenn die Sicherung startet, wird ein Thread zum Schreiben der Sicherungsdateien in das Sicherungsverzeichnis reserviert. Wenn sich das Sicherungsverzeichnis allerdings auf einem Device befindet, das eine erhöhte Schreib-Arbeitslast verarbeiten kann (wie z.B. ein RAID-Array), kann die Sicherungsperformance gesteigert werden, indem Sie die Anzahl der Threads erhöhen, die als Schreibprogramme agieren. Wenn diese Klausel auf ON (Standardeinstellung) gesetzt ist, überprüft der Datenbankserver periodisch die Schreib- und Leseperformance von allen Devices, die an der Sicherung teilnehmen. Wenn die Sicherungsgeschwindigkeit insgesamt gesteigert werden kann, indem ein weiterer Schreib-Thread erstellt wird, erstellt der Datenbankserver einen solchen.

  • WITH CHECKPOINT LOG-Klausel   Diese Klausel gibt an, wie die Sicherung die Datenbankdateien verarbeitet, bevor sie in das Zielverzeichnis geschrieben werden. Die Entscheidung, entweder Pre-Images während einer Sicherung anzuwenden oder das Checkpointlog als Teil der Sicherung zu kopieren, wirkt sich auf die Performance aus. Die Standardeinstellung ist AUTO für Image-Sicherungen und COPY für Archivsicherungen.

  • COPY-Klausel   Diese Option darf nicht mit der WAIT BEFORE START-Klausel in der BACKUP-Anweisung verwendet werden.

    Wenn Sie COPY angeben, werden bei der Sicherung die Datenbankdateien gelesen, ohne dass geänderte Seiten angewendet werden. Das gesamte Checkpoint-Log und der System-DBSpace werden in das Sicherungsverzeichnis kopiert. Wenn der Datenbankserver das nächste Mal gestartet wird, stellt er automatisch den Datenbankstatus wieder her, der beim Checkpoint zum Zeitpunkt des Sicherungsstarts galt.

    Da Seiten nicht in die temporäre Datei geschrieben werden müssen, kann das Verwenden dieser Option die Sicherungsperformance verbessern und interne Serverkonflikte bei anderen Verbindungen verringern, die während einer Sicherung aktiv sind. Da das Checkpoint-Log Original-Sicherungskopien von geänderten Seiten enthält, wird es bei Datenbankaktualisierungen wachsen. Wenn COPY angegeben ist, kann die gesicherte Kopie der Datenbankdateien größer als die Datenbankdateien zum Zeitpunkt des Sicherungsstarts sein. Die COPY-Option sollte nur verwendet werden, wenn im Zielverzeichnis der Plattenspeicherplatz kein Problem darstellt.

  • NO COPY-Klausel   Wenn Sie NO COPY angeben, wird das Checkpoint-Log nicht als Teil der Sicherung kopiert. Diese Option bewirkt, dass geänderte Seiten in der temporären Datei gespeichert werden, damit sie im Verlauf der Sicherung angewendet werden können. Die Sicherungskopien der Datenbankdateien sind gleich groß wie die Datenbank zum Zeitpunkt des Sicherungsstarts.

    Diese Option führt zu kleineren gesicherten Datenbankdateien, aber die Sicherung braucht möglicherweise länger und kann die Performance von anderen Vorgängen im Datenbankserver beeinträchtigen. Sie ist in Situationen nützlich, bei denen der Speicherplatz auf dem Ziellaufwerk beschränkt ist.

  • RECOVER-Klausel   Wenn Sie RECOVER angeben, kopiert der Datenbankserver das Checkpoint-Log (wie bei der COPY-Option), wendet aber das Checkpoint-Log für die Datenbank an, wenn die Sicherung abgeschlossen ist. Dies stellt die gesicherten Datenbankdateien im selben Status (und derselben Größe) wieder her, in der sie beim Start des Sicherungsvorgangs waren. Diese Option kann nützlich sein, wenn der Speicherplatz auf dem Sicherungslaufwerk beschränkt ist (sie benötigt dieselbe Menge an Speicherplatz wie die COPY-Option zum Sichern des Checkpoint-Logs, aber die resultierende Dateigröße ist kleiner).

  • AUTO-Klausel   Wenn Sie AUTO angeben, überprüft der Datenbankserver die Menge des verfügbaren Speicherplatzes auf dem Datenträger, der das Sicherungsverzeichnis enthält. Wenn mindestens doppelt so viel verfügbarer Plattenspeicherplatz vorhanden ist wie die Größe der Datenbank zum Zeitpunkt des Sicherungsstarts, verhält sich diese Option so, als ob COPY angegeben wäre. Ansonsten verhält sie sich als NO COPY. AUTO ist die Standardeinstellung.

  • MAX WRITE-Klausel   Für Archivsicherungen wird standardmäßig ein Thread zum Schreiben der Sicherungsdateien verwendet. Wenn sich das Sicherungsverzeichnis auf einem Gerät befindet, das eine erhöhte Schreib-Arbeitslast verarbeiten kann (wie z.B. ein RAID-Array), kann die Sicherungsperformance gesteigert werden, indem Sie die Anzahl der Threads erhöhen, die als Schreibprogramme agieren.

    Wenn AUTO angegeben ist, wird ein Ausgabedatenstrom für jeden Lese-Thread eingerichtet. Der Wert n gibt die maximale Anzahl von Ausgabedatenströmen an, die erstellt werden können, bis zur Anzahl von Lese-Threads. Der Standardwert für diese Klausel ist 1. Bei einer Sicherung auf Band kann nur ein Schreib-Thread benutzt werden.

    Der erste Datenstrom, der Datenstrom 0, erzeugt Dateien mit der Bezeichnung myarchive.X, wobei X eine Zahl ist, die mit 1 beginnt und inkrementiert, bis die Anzahl der erforderlichen Dateien erreicht ist. Alle anderen Datenströme erzeugen Dateien mit der Bezeichnung myarchive.Y.Z, wobei Y die Datenstromnummer (beginnend bei 1) ist, und Z eine Zahl ist, die bei 1 beginnt und inkrementiert, bis die Anzahl der erforderlichen Dateien erreicht ist.

Bemerkungen

Die BACKUP-Anweisung führt eine serverseitige Sicherung durch. Um eine clientseitige Sicherung durchzuführen, verwenden Sie das Dienstprogramm dbbackup. Weitere Hinweise finden Sie unter Sicherungsdienstprogramm (dbbackup).

Jeder Sicherungsvorgang, egal ob Sicherungskopie oder Archiv, aktualisiert eine Sicherungsverlaufsdatei namens backup.syb. Die Datei protokolliert die BACKUP- und RESTORE-Vorgänge, die auf einem Datenbankserver ausgeführt wurden. Hinweise darüber, wie der Standort der backup.syb-Datei bestimmt wird, finden Sie unter SALOGDIR-Umgebungsvariable.

Um eine Sicherung zu erstellen, die auf einem schreibgeschützten Server gestartet werden kann, ohne die Wiederherstellung durchführen zu müssen, müssen Sie die Klauseln WAIT BEFORE START und WITH CHECKPOINT LOG NO COPY verwenden. Die WAIT BEFORE START-Klausel stellt sicher, dass das Log für das Zurücksetzen leer ist und die Klausel WITH CHECKPOINT LOG NO COPY gewährleistet, dass das Checkpoint-Log leer ist. Wenn eine dieser Dateien fehlt, ist eine Wiederherstellung erforderlich.

Syntax 1 (Sicherungskopie)   Eine Sicherungskopie erstellt Kopien von allen Datenbankdateien, auf die gleiche Weise wie das Sicherungsdienstprogramm (dbbackup). Standardmäßig erfolgt die Sicherung durch das Sicherungsdienstprogramm auf dem Clientcomputer. Sie können jedoch die Option -s festlegen, um mit dem Sicherungsdienstprogramm eine Sicherung auf dem Datenbankserver vorzunehmen. Bei einer BACKUP DATABASE-Anweisung kann eine Sicherung allerdings nur auf dem Datenbankserver erfolgen.

Optional können nur die Datenbankdatei(en) oder das Transaktionslog gesichert werden. Das Log kann auch umbenannt oder gekürzt werden, wenn die Sicherung abgeschlossen ist.

Sie können auch eine leere Zeichenfolge als Verzeichnis eingeben, wenn Sie das Log umbenennen oder verkürzen wollen, ohne es vorher zu kopieren. Dies ist in einer Replikationsumgebung mit begrenztem Speicherplatz nützlich. Sie können diese Funktion mit einem Event-Handler für die Transaktionslog-Größe verwenden, um das Log bei Erreichen einer bestimmten Größe umzubenennen, sowie mit der Option delete_old_logs, um das Log zu löschen, wenn es nicht mehr benötigt wird.

Um eine Sicherungskopie wiederherzustellen, kopieren Sie die gesicherten Dateien an ihre ursprünglichen Stellen zurück und übernehmen die Transaktionslogs wieder, wie unter Datenbank mit mehreren Transaktionlogs wiederherstellen beschrieben.

Syntax 2 (Archivsicherung)   Eine Archivsicherung erstellt eine einzige Datei, die alle erforderlichen Sicherungsinformationen enthält. Das Ziel kann entweder ein Dateiname oder der Devicename eines Bandlaufwerks sein.

Auf einem Band kann es nur eine Sicherung geben. Das Band wird nach beendeter Sicherung ausgeworfen.

Nur ein Archiv pro Band ist zulässig, ein einzelnes Archiv kann dagegen mehrere Bänder umfassen. Um eine Datenbank aus einer Archivsicherung wiederherzustellen, verwenden Sie die RESTORE DATABASE-Anweisung.

Wenn eine RESTORE DATABASE-Anweisung eine Archivdatei referenziert, die nur ein Transaktionslog enthält, muss die Anweisung einen Dateinamen für den Speicherort der wiederherzustellenden Datenbankdatei angeben, selbst wenn die Datei nicht vorhanden ist. Die RESTORE DATABASE-Anweisung zur Wiederherstellung einer Datenbankdatei aus einem Archiv, das nur ein Log enthält, in das Verzeichnis C:\MYNEWDB, sieht beispielsweise wie folgt aus:

RESTORE DATABASE 'c:\mynewdb\my.db' FROM Archivstamm
Achtung

Sicherungskopien der Datenbank und des Transaktionslogs dürfen auf keinen Fall geändert werden. Wenn während der Sicherung keine Transaktionen aktiv waren oder Sie BACKUP DATABASE WITH CHECKPOINT LOG RECOVER oder WITH CHECKPOINT LOG NO COPY angegeben haben, können Sie die Validität der Sicherungsdatenbank im Schreibschutzmodus prüfen, oder indem Sie eine Kopie der Sicherungsdatenbank validieren.

Wenn jedoch Transaktionen aktiv waren oder Sie BACKUP DATABASE WITH CHECKPOINT LOG COPY angegeben haben, muss der Datenbankserver eine Wiederherstellung der Datenbank bei ihrem Start durchführen. Die Wiederherstellung ändert die Sicherungskopie, und das sollte vermieden werden.

Berechtigungen

Sie müssen über DBA-, REMOTE DBA- oder BACKUP-Datenbankberechtigungen verfügen.

Nebenwirkungen

Verursacht einen Checkpoint

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

  • Windows Mobile   Nur die Syntax von BACKUP DATABASE DIRECTORY (Syntax 1 oben) wird unter Windows Mobile unterstützt.

Beispiel

Die aktuelle Datenbank und das Transaktionslog werden in verschiedenen Dateien gesichert, das aktuelle Transaktionslog wird umbenannt. Eine Sicherungskopie wird erstellt.

BACKUP DATABASE
DIRECTORY 'd:\\temp\\backup'
TRANSACTION LOG RENAME;

Die Option zum Umbenennen des Transaktionslogs ist vor allem in Replikationsumgebungen von Bedeutung, wo das alte Transaktionslog noch benötigt wird.

Die aktuelle Datenbank und das Transaktionslog werden auf Band gesichert:

BACKUP DATABASE
TO '\\\\.\\tape0';

Das Log wird umbenannt, ohne dass eine Kopie angelegt wird:

BACKUP DATABASE DIRECTORY ' '
TRANSACTION LOG ONLY
TRANSACTION LOG RENAME;

Die BACKUP DATABASE-Anweisung wird mit einem dynamisch aufgebauten Verzeichnisnamen ausgeführt:

CREATE EVENT NightlyBackup
SCHEDULE 
START TIME '23:00' EVERY 24 HOURS
HANDLER
BEGIN
    DECLARE dest LONG VARCHAR;
    DECLARE day_name CHAR(20);
    
    SET day_name = DATENAME( WEEKDAY, CURRENT DATE );
    SET dest = 'd:\\backups\\' || day_name;
            BACKUP DATABASE DIRECTORY dest
    TRANSACTION LOG RENAME;
END;