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 - Datenbankadministration » Verwaltung Ihrer Datenbank » Dienstprogramme für die Datenbankadministration

 

Entladen-Dienstprogramm (dbunload)

Entlädt eine Datenbank in eine SQL-Befehlsdatei

Syntax
dbunload [ Optionen ] [ Verzeichnis ]
Option Beschreibung
@data

Optionen aus der angegebenen Umgebungsvariablen oder Konfigurationsdatei einlesen. Weitere Hinweise finden Sie unter Konfigurationsdateien verwenden.

Wenn Sie Kennwörter oder andere Informationen in einer Konfigurationsdatei schützen möchten, können Sie das Dienstprogramm zum Verschleiern von Dateien verwenden. Weitere Hinweise finden Sie unter Dienstprogramm zum Verschleiern von Dateien (dbfhide).

-ac "Schlüsselwort=Wert; ..."

Verbindung mit einer bestehenden Datenbank aufnehmen und die Daten direkt in sie entladen, wodurch der Vorgang einer Datenbankentladung und des Neuladens der Ergebnisse in eine bestehende Datenbank kombiniert wird. Diese Option wird unter Windows Mobile nicht unterstützt.

Beispielsweise könnten Sie eine neue Datenbank mit dem Dienstprogramm Initialisierung erstellen und sie dann mit dieser Option wiederladen. Diese Methode ist nützlich, wenn Sie Initialisierungsoptionen ändern wolen.

Der folgende Befehl (in einer Zeile eingegeben) lädt eine Kopie der Datenbank c:\mydata.db in eine bestehende Datenbankdatei namens c:\mynewdata.db:

dbunload -c "UID=DBA;PWD=sql;DBF=c:\mydata.db"
         -ac "UID=DBA;PWD=sql;DBF=c:\mynewdata.db"

Wenn die ursprüngliche Datenbank mit der Version 9 oder früher von SQL Anywhere erstellt wurde und die neue Datenbank noch nicht läuft, müssen Sie den Datenbankservernamen mit der Option -ac angeben. Zum Beispiel:

dbunload -c "UID=DBA;PWD=sql;DBF=c:\mydata.db"
          -ac "UID=DBA;PWD=sql;DBF=c:\mynewdata.db;ENG=newserver"

Wenn Sie diese Option verwenden, wird keine Zwischenkopie der Daten auf der Festplatte angelegt. Sie geben daher im Befehl kein Entladeverzeichnis an. Dies bietet größere Sicherheit für Ihre Daten.

-an Datenbank

Die Vorgänge "Entladen einer Datenbank", "Erstellen einer neuen Datenbank" und "Laden der Daten" mit dieser Option kombinieren. Diese Option wird unter Windows Mobile, oder wenn Sie Datenbanken der Version 9 oder früher unter Mac OS X für Intel neu aufbauen, nicht unterstützt.

Die Optionen, die Sie bei der Erstellung der Quell-Datenbank angegeben haben, werden verwendet, um die neue Datenbank zu erstellen. Sie können aber die Initialisierungsoptionen ändern, indem Sie andere unterstützte dbunload-Optionen eingeben (wie -ap zum Ändern der Seitengröße oder -et zur Aktivierung der Tabellenverschlüsselung).

Der folgende Befehl (in einer Zeile eingegeben) erstellt zum Beispiel eine neue Datenbankdatei namens mydatacopy.db und kopiert das Schema und die Daten von mydata.db hinein:

dbunload -c "UID=DBA;PWD=sql;DBF=c:\mydata.db"
         -an c:\mydatacopy.db

Wenn Sie diese Option verwenden, wird keine Zwischenkopie der Daten auf der Festplatte angelegt. Sie geben daher im Befehl kein Entladeverzeichnis an. Dies bietet größere Sicherheit für Ihre Daten.

Beim Erstellen der neuen Datenbank wird an den DBSpace-Dateinamen ein "R" angehängt, um Dateinamenskonflikte zu vermeiden, wenn die DBSpace-Datei für die neue Datenbank in demselben Verzeichnis wie der DBSpace für die ursprüngliche Datenbank erstellt wird. Beispiel: Wenn eine entladene Datenbank einen DBSpace namens "library" in der Datei library.db hat, lautet der library-DBSpace für die neue Datenbank library.dbR.

Die mit der Option -an angegebene Datei ist relativ zum Datenbankserver.

-ap Größe Die Seitengröße der neuen Datenbank festlegen. Diese Option wird ignoriert, wenn nicht auch die Option -an oder -ar verwendet wird. Die Seitengröße für eine Datenbank (in Byte) kann 2048, 4096, 8192, 16384 oder 32768 betragen, wobei der Standardwert die Seitengröße der ursprünglichen Datenbank ist. Sie müssen mit dieser Option entweder die Option -an oder -ar angeben. Falls auf dem Datenbankserver bereits Datenbanken ausgeführt werden, muss die Seitengröße des Servers (festgelegt mit der Option -gp) groß genug für diese neue Seitengröße sein. Weitere Hinweise finden Sie unter Serveroption -gp.
-ar [ directory ]

Eine neue Datenbank mit denselben Einstellungen erstellen wie bei der alten Datenbank, neu laden und die alte Datenbank ersetzen. Sie können aber die Initialisierungsoptionen ändern, indem Sie andere unterstützte dbunload-Optionen eingeben (wie -ap zum Ändern der Seitengröße oder -et zur Aktivierung der Tabellenverschlüsselung).

Wenn Sie diese Option verwenden, darf es keine anderen Verbindungen zu der Datenbank geben und die Datenbankverbindung muss lokal (nicht über ein Netzwerk) aufgenommen werden. Diese Option wird unter Windows Mobile, oder wenn Sie Datenbanken der Version 9 oder früher unter Mac OS X für Intel neu aufbauen, nicht unterstützt.

Wenn Sie Verzeichnis angeben, werden die Transaktionslog-Offsets für die Replikation zurückgesetzt und das Transaktionslog wird von der alten Datenbank in das angegebene Verzeichnis verschoben. Das benannte Verzeichnis muss das Verzeichnis sein, das die alten Transaktionslogs enthält, die vom Nachrichtenagenten und Replication Agent verwendet werden. Die Transaktionslog-Verarbeitung findet nur statt, wenn die Datenbank in einer Replikation verwendet wird: Wenn es keinen SQL Remote-Publikationseigentümer oder keine LTM-Überprüfung gibt, wird das alte Transaktionslog nicht benötigt und daher gelöscht, anstatt in das angegebene Verzeichnis kopiert zu werden. Weitere Hinweise finden Sie unter Sichern von Datenbanken in einer Synchronisations- und Replikationsumgebung.

Beim Erstellen der neuen Datenbank wird an den DBSpace-Dateinamen ein "R" angehängt, um Dateinamenskonflikte zu vermeiden, wenn die DBSpace-Datei für die neue Datenbank in demselben Verzeichnis wie der DBSpace für die ursprüngliche Datenbank erstellt wird. Beispiel: Wenn eine entladene Datenbank einen DBSpace namens "library" in der Datei library.db hat, lautet der library-DBSpace für die neue Datenbank library.dbR.

Wenn Sie eine verschlüsselte Datenbank neu aufbauen, muss der Chiffrierschlüssel für die ursprüngliche und die neue Datenbank derselbe sein.

Wenn Sie die -ar-Option verwenden, werden die Datenbankkürzungspunkt auf Null zurückgesetzt.

-c "Schlüsselwort=Wert; ..."

Verbindungsparameter für die Quelldatenbank angeben. Eine Beschreibung der Verbindungsparameter entnehmen Sie dem Abschnitt Verbindungsparameter. Die Benutzer-ID muss über DBA- Berechtigungen verfügen, damit der Benutzer mit Sicherheit die Berechtigungen für alle Tabellen in der Datenbank besitzt.

Die folgende Anweisung entlädt zum Beispiel die Beispieldatenbank und verbindet sich unter Verwendung der Benutzer-ID "DBA" und des Kennworts "sql": Die Daten werden in das Verzeichnis c:\extract entladen.

dbunload -c "DBF=Beispielverzeichnis\demo.db;UID=DBA;PWD=sql" c:\unload

Hinweise zum Beispielverzeichnis finden Sie unter Beispielverzeichnis.

-cm { sql | dbinit }

Anzeige der CREATE DATABASE-Anweisung oder des dbinit-Befehls im Meldungsfenster des Servers, um eine Datenbank zu erstellen, die mit der entladenen Datenbank identisch ist. Wenn auch die Option -an angegeben wird, ist der angezeigte Befehl derjenige mit dem die neue Datenbank erstellt wird.

  • sql   Zeigt die CREATE DATABASE-Anweisung an, die in die reload.sql-Datei geschrieben wird.

  • dbinit   Zeigt den Befehl des Dienstprogramms für die Initialisierung (dbinit) an.

Wenn die Anweisung oder der Befehl für eine bestehende Datenbank mit starker Verschlüsselung (Option -an ist nicht angegeben) angezeigt wird, kann der Chiffrierschlüssel aus der Datenbank nicht bezogenen werden und daher wird ein Fragezeichen (?) in der ENCRYPTED-Klausel oder der Option -ek angezeigt.

Der Befehl oder die Anweisung zum Erstellen wird nicht angezeigt, wenn Sie eine Datenbank entladen, die mit einem Datenbankserver der Version 10 oder früher erstellt wurde.
-cp Tabellendaten-Ausgabedateien komprimieren, indem das Schlüsselwort COMPRESSED an die UNLOAD TABLE-Anweisungen angehängt wird, die ausgeführt werden. Diese Option hat keine Wirkung, wenn sie mit der Option -an oder -ar angegeben wird.
-d Mit dieser Option werden keine Datenbank-Definitionsbefehle erzeugt (CREATE TABLE, CREATE INDEX usw). reload.sql enthält nur Anweisungen zum Neuladen der Daten.
-dc

Erzwingt eine Neuberechnung aller berechneten Spalten in der Datenbank. Standardmäßig werden berechnete Spalten nicht neu berechnet. Wenn die Option -dc angegeben ist, wird dem reload.sql-Skript ein neuer Abschnitt hinzugefügt, um berechnete Spalten neu zu berechnen. Es werden Anweisungen der folgenden Form hinzugefügt.

ALTER TABLE "owner"."Tabellenname"
ALTER "Berechnete_Spalte" SET COMPUTE (compute_Ausdruck);

Wenn Ihre Tabellen Kontext-abhängige berechnete Werte enthalten, wie z.B. CURRENT DATE, wird empfohlen, dass Sie die ALTER TABLE-Anweisung und nicht die Option -dc verwenden, um berechnete Spaltenwerte neu zu berechnen. Weitere Hinweise finden Sie unter ALTER TABLE-Anweisung.

-e Tabelle, ...

Die angegebenen Dateien aus der reload.sql-Datei ausschließen. Tabellennamen berücksichtigen nie die Groß- und Kleinschreibung, auch in Datenbanken, die die Groß- und Kleinschreibung berücksichtigen.

Eine Datei reload.sql, die mit der Option -e erstellt wurde, darf nicht benutzt werden, um eine Datenbank neu zu erstellen, weil die Datei nicht alle Tabellen der Datenbank enthält. Wenn eine Tabelle sie referenzierende Fremdschlüssel hat, kann die Datenbank nicht ohne den Inhalt der Tabelle neu aufgebaut werden.

Es wird empfohlen, dass Sie die Option -e mit der Option -d nur verwenden, um Daten aus allen Tabellen außer jenen durch -e festgelegten Tabellen zu entladen.

-ea Algorithmus

Verschlüsselungsalgorithmus für die Datenbank- oder Tabellenverschlüsselung an geben (-et). Geben Sie -ea simple für die einfache Verschlüsselung an (nicht -ek oder -ep). Eine einfache Verschlüsselung ist gleichbedeutend mit der Verschleierung und und dient nur dazu, die Daten bei einem zufälligen Direktzugriff auf die Datenbankdatei zu verbergen, wobei das Entschlüsseln der Daten in Ihrer Datenbank mithilfe eines Festplatten-Dienstprogramms erschwert wird.

Um die Sicherheit zu erhöhen, geben Sie AES oder AES256 für starke 128-Bit- bzw. 256-Bit-Verschlüsselung an. Geben Sie AES_FIPS oder AES256_FIPS für FIPS-bestätigte 128-Bit- bzw. 256-Bit-Verschlüsselung an. Bei starker Verschlüsselung müssen Sie auch die Option -ek oder -ep angeben. Weitere Hinweise zur starken Verschlüsselung finden Sie unter Starke Verschlüsselung.

Um eine nicht verschlüsselte Datenbank zu erstellen, geben Sie die Option -ea none an oder geben die Option -ea nicht an (und geben weder -e, -et, -ep noch -ek an).

Wenn Sie die Option -ea nicht angeben, ist das Standardverhalten wie folgt:

  • -ea none, wenn -ek, -ep oder -et nicht angegeben ist
  • -ea AES, wenn -ek oder -ep angegeben ist (mit oder ohne -et)
  • -ea simple, wenn -et ohne -ek oder -ep verwendet wird

Algorithmusnamen berücksichtigen die Groß- und Kleinschreibung nicht.

Erforderliche getrennt lizenzierbare Komponenten

ECC-Verschlüsselungen und FIPS-zertifizierte Verschlüsselungen erfordern eine getrennte Lizenz. Alle Technologien für starke Verschlüsselungen unterliegen Exportbestimmungen.

Weitere Hinweise finden Sie unter Getrennt lizenzierbare Komponenten.

-ek Schlüssel

Einen Chiffrierschlüssel im cbunload-Befehl für die neu erstellte Datenbank angeben, wenn Sie eine Datenbank entladen und erneut laden (unter Verwendung der Option -an). Wenn Sie eine stark verschlüsselte Datenbank erstellen, müssen Sie den Chiffrierschlüssel liefern, um die Datenbank oder das Transaktionslog überhaupt verwenden zu können. Der für die Verschlüsselung verwendet Algorithmus ist der, den Sie mit der Option -ea angeben. Wenn Sie die Option -ek angeben, ohne -ea anzugeben, wird der AES-Algorithmus verwendet. Weitere Hinweise finden Sie unter Starke Verschlüsselung.

Achten Sie auf Ihren Schlüssel. Hinterlegen Sie eine Kopie Ihres Schlüssels an einem sicheren Ort. Ein verlorener Schlüssel führt zu einer nicht benutzbaren Datenbank, die sich nicht wiederherstellen lässt.

-ep

Aufforderung zur Angabe eines Chiffrierschlüssels für die neu erstellte Datenbank, wenn Sie Ihre Datenbank entladen und erneut unter Verwendung der Option -an laden. Diese zusätzliche Sicherheitsmaßnahme verhindert, dass der Chiffrierschlüssel in lesbarer Form angezeigt wird. Wenn Sie die Option -ep ohne -an angeben, wird die -ep ignoriert. Wenn Sie die Optionen -ep und -an angeben, müssen Sie den Chiffrierschlüssel zur Bestätigung der Eingabe ein zweites Mal eingeben. Wenn die Eingaben nicht übereinstimmen, schlägt das Entladen fehl. Weitere Hinweise finden Sie unter Starke Verschlüsselung.

-er

Verschlüsselung aus verschlüsselten Tabellen während eines Entladevorgangs entfernen.

Beim Neuaufbau einer Datenbank mit aktivierter Tabellenverschlüsselung müssen Sie entweder -er oder -et angeben, um anzuzeigen, ob bei der neuen Datenbank die Tabellenverschlüsselung aktiviert ist. Sonst erhalten Sie einen Fehler, wenn Sie versuchen, Daten in die neue Datenbank zu laden.

Der folgende Befehl entlädt eine Datenbank (mydata.db) mit verschlüsselten Tabellen in eine neue Datenbank (mydatacopy.db), bei der die Tabellenverschlüsselung nicht aktiviert ist, wobei die Verschlüsselung von verschlüsselten Tabellen entfernt wird:

dbunload -an c:\mydatacopy.db -er 
         -c "UID=DBA;PWD=sql;
         DBF=c:\mydata.db;
         DBKEY=29bN8cj1z"
-et

Datenbanktabellen-Verschlüsselung in der neuen Datenbank aktivieren (-an oder -ar muss auch angegeben sein). Wenn Sie die Option -et ohne die Option -ea angeben, wird der AES-Algorithmus verwendet. Wenn Sie die Option -et angeben, müssen Sie auch die Optionen -ep oder -ek angeben. Sie können die Tabellenverschlüsselungs-Einstellungen für die neue Datenbank ändern, sodass sie sich von den Einstellungen der entladenen Datenbank unterscheiden.

Beim Neuaufbau einer Datenbank mit aktivierter Tabellenverschlüsselung müssen Sie entweder -er oder -et angeben, um anzuzeigen, ob bei der neuen Datenbank die Tabellenverschlüsselung aktiviert ist. Sonst erhalten Sie einen Fehler, wenn Sie versuchen, Daten in die neue Datenbank zu laden.

Das folgende Beispiel entlädt eine Datenbank (mydata.db), die Tabellen hat, die mit dem Algorithmus für einfache Verschlüsselung chiffriert sind, in eine neue Datenbank (mydatacopy.db), bei der die Tabellenverschüsselung aktiviert ist, und verwendet AES_FIPS-Verschlüsselung mit dem Schlüssel 34jh:

dbunload -an c:\mydatacopy.db -et -ea AES_FIPS
         -ek 34jh
         -c "UID=DBA;PWD=sql;DBF=c:\mydata.db"
-g

Materialisierte Ansichten   Standardmäßig werden als MANUAL REFRESH definierte materialisierte Ansichten nach einem Neuladen nicht initialisiert. Wenn Sie festlegen wollen, dass diese materialisierten Ansichten im Zuge des Neuladeverfahrens initialisiert werden, geben Sie die Option -g an. Wenn Sie -g angeben, führt der Datenbankserver die Systemprozedur sa_refresh_materialized_views aus. Weitere Hinweise finden Sie unter sa_refresh_materialized_views-Systemprozedur.

Bei der Verwendung der Option -g sollten Sie bedenken, dass die Initialisierung aller materialisierten Ansichten dazu führen kann, dass der Neuladeprozess signifikant länger dauert. Andererseits bewirkt ein Weglassen der Option -g, dass die erste Abfrage, die eine nicht-initialisierte Ansicht zu verwenden versucht, warten muss, während der Datenbankserver die Ansicht initialisiert, wodurch unerwartete Verzögerungen bewirkt werden können. Wenn Sie die Option -g nicht verwenden, können Sie die materialisierten Ansichten auch manuell initialisieren, nachdem das Neuladen abgeschlossen ist. Weitere Hinweise finden Sie unter Materialisierte Ansichten initialisieren.

Textindizes   Standardmäßig werden als MANUAL REFRESH definierte Textindizes nach einem Neuladen nicht initialisiert. Wenn Sie definieren möchten, dass Textindizes im Zuge des Neuladeverfahrens initialisiert werden, geben Sie die Option -g an. Wenn Sie -g angeben, führt der Datenbankserver die Systemprozedur sa_refresh_text_indexes aus. Weitere Hinweise finden Sie unter sa_refresh_text_indexes-Systemprozedur.

-ii Die Anweisung UNLOAD verwenden, um Daten aus der Datenbank zu extrahieren, und die Anweisung LOAD in der Datei reload.sql, um die Datenbank wieder mit Daten zu füllen. Dies ist die Standardeinstellung.
-ix Die Anweisung UNLOAD verwenden, um Daten aus der Datenbank zu extrahieren, und die INPUT-Anweisung von Interactive SQL in der Datei reload.sql, um die Datenbank wieder mit Daten zu füllen.
-k

Daten in die sa_diagnostic_auxiliary_catalog-Tabelle einfügen. Diese Tabelle ordnet Objekt-IDs für Tabellen, Benutzer, Prozeduren usw. aus der Quelldatenbank der Protokollierungsdatenbank zu. Es werden auch alle Histogramme entladen/neugeladen. Diese Option wird bei der Erstellung einer Protokollierungsdatenbank verwendet, d.h. eine Datenbank, die Diagnoseprotokollierungsinformationen erhält. Die Tabelle sa_diagnostic_auxiliary_catalog ermöglicht es dem Server, Bedingungen zu simulieren, die vorherrschten, als Protokollierungsdaten aufgezeichnet wurden (z.B. für die Verwendung mit dem Indexberater oder bei einer Anwendungsprofilerstellung). Diese Option ist besonders zusammen mit der Option -n nützlich. Weitere Hinweise finden Sie unter Erweiterte Anwendungsprofilerstellung mithilfe der Diagnoseprotokollierung und sa_diagnostic_auxiliary_catalog-Tabelle.

-l

Erzwingen, dass der aktuelle Wert von SYSTABCOL.max_identity bei einem Wiederaufbau der Datenbank erhalten bleibt.

Standardmäßig gilt: Wenn eine Datenbank mit Tabellen, die Autoinkrementspalten enthalten, neu aufgebaut wird, berechnet der Datenbankserver den nächsten verfügbaren Wert für jede Autoinkrementspalte basierend auf den aktuellen Inhalten der Tabellen. In den meisten Fällen ist dies ausreichend. Wenn allerdings Zeilen am Ende des Wertebereichs gelöscht wurden, können Werte wieder verwendet werden, was in bestimmten Fällen nicht wünschenswert ist.

Wenn Sie die Option -l angeben, werden Aufrufe der Systemprozedur sa_reset_identity in das generierte reload.sql-Skript für jede Tabelle eingefügt, die einen Autoinkrementwert enthält, sodass der Wert von SYSTABCOL.max_identity erhalten bleibt.

Siehe auch:

-m Keine Benutzer-IDs für Datenbanken behalten, die in eine Replikation einbezogen sind.
-n Datenbankdaten nicht entladen. reload.sql enthält SQL-Anweisungen, die nur die Struktur der Datenbank aufbauen. Wenn die Datei reload.sql LOAD TABLE- oder INPUT-Anweisungen enthalten soll, verwenden Sie stattdessen die Option -nl.
-nl Die Struktur entladen (dasselbe Verhalten wie bei der Option -n), aber die resultierende Datei reload.sql umfasst auch LOAD TABLE- oder INPUT-Anweisungen für jede Tabelle. Wenn diese Option verwendet wird, werden keine Benutzerdaten entladen. Wenn Sie die Option -nl angeben, müssen Sie auch ein Datenverzeichnis aufnehmen, damit die LOAD/INPUT-Anweisungen generiert werden können, auch wenn keine Dateien in dieses Verzeichnis geschrieben werden. Mit dieser Option können Sie ein Entlade-Skript generieren, ohne dass Daten entladen werden. Sie können die Daten entladen, indem Sie die Option -d angeben. Wenn eine Datenbank eine Tabelle enthält, deren Daten nicht entladen werden sollen, kann das Entladen der Daten bei dieser Tabelle übersprungen werden, indem dbunload -d -e Tabellenname verwendet wird.
-no

Datenbankobjekte nach Namen geordnet entladen. Standardmäßig generiert dbunload Objekte in der Reihenfolge, in der sie erstellt wurden. Wenn Sie die -no-Option eingeben, können Sie Datenbankschemas vergleichen, wenn die Datenbanken dieselben Objekte enthalten, die aber zu unterschiedlichen Zeitpunkten erstellt wurden.

Die Objektdefinitionen sind nach Objekttypen in alphabetischer Reihenfolge in der reload.sql-Datei geordnet, wenn -no angegeben wird:

  • Benutzer
  • Gruppenmitgliedschaften
  • Tabellen
  • Indizes und Fremdschlüssel
  • Ansichten
  • Prozeduren
  • Funktionen
  • Trigger
  • Ereignisse
  • Webdienste

Die Objektdefinitionen werden in der Reihenfolge Eigentümer,Name ausgegeben. In einigen Fällen wird ein drittes Element in die Reihenfolge aufgenommen (zum Beispiel: Fremdschlüssel-Rollenname, Triggername).

Die Option -no kann mit den Optionen -n, -nl, -ar, -an oder -ac nicht verwendet werden. Zur Vereinfachung von Vergleichen wird empfohlen, dass Sie die Option -no verwenden, wenn Sie die Reload-Skripten für Datenbanken vergleichen, die mit derselben Version des Datenbankservers erstellt wurden, da es bei den Objektdefinitionen kleinere Unterschiede geben kann.

Achtung

Die generierte Datei sollte nicht verwendet werden, um eine neue Datenbank zu erstellen, weil in manchen Fällen die Reihenfolge der Objekterstellung bedeutsam ist. Beispiel: Wenn die Prozedur p2 die Prozedur p1 aufruft und p1 eine Ergebnismenge zurückgibt, kann es wichtig sein, p1 vor p2 zu definieren. Wenn versucht wird, ein reload.sql-Skript auszuführen, das mit der Option -no erstellt wurde, wird ein Fehler gemeldet.

-o Dateiname Meldungen werden in der angegebenen Datei protokolliert. Der Standort dieser Datei ist relativ zu dbunload.
-p Zeichen Bei externen Entladevorgängen (dbunload-Option -x) das Standard-Escapezeichen (\) durch ein anderes Zeichen ersetzen. Diese Option ist nur verfügbar, wenn Sie dieses Programm von der Befehlszeile aus ausführen.
-q Ausführung im stillen Modus. Es werden keine Meldungen oder Fenster angezeigt. Diese Option ist nur verfügbar, wenn Sie dieses Programm von der Befehlszeile aus ausführen. Wenn Sie die Option -q angeben, müssen Sie auch die Option -y angeben, sonst schlägt das Entladen fehl, wenn reload.sql bereits vorhanden ist.
-qc Das Meldungsfenster schließen, wenn das Entladen abgeschlossen ist. Standardmäßig bleibt das dbunload-Meldungsfenster geöffnet, bis es von einem Benutzer geschlossen wird. Diese Option ist nur unter Windows Mobile verfügbar.
-r Reload-Datei Namen und Verzeichnis der generierten Reload-Befehlsdatei ändern. Standardwert ist reload.sql im aktuellen Verzeichnis. Das Verzeichnis ist relativ zum aktuellen Verzeichnis der Clientanwendung und nicht des Servers.
-t Tabelle,...

Eine Liste von Tabellen zum Entladen angeben. Standardmäßig werden alle Tabellen entladen. Zusammen mit der Option -n haben Sie die Möglichkeit, nur eine Gruppe von Tabellendefinitionen zu entladen. Tabellennamen berücksichtigen nie die Groß- und Kleinschreibung, auch in Datenbanken, die die Groß- und Kleinschreibung berücksichtigen.

Eine Datei reload.sql, die mit der Option -t erstellt wurde, darf nicht benutzt werden, um eine Datenbank neu zu erstellen, weil die Datei nicht alle Tabellen der Datenbank enthält. Wenn eine Tabelle sie referenzierende Fremdschlüssel hat, kann die Datenbank nicht ohne den Inhalt der Tabelle neu aufgebaut werden.

Es wird empfohlen, dass Sie die Option -t mit der Option -d nur verwenden, um Daten aus den durch "-t" festgelegten Tabellen zu entladen.

-u Verwenden Sie diese Option, wenn Sie eine Datenbank mit einem beschädigten Index entladen, damit der beschädigte Index nicht zum Sortieren der Daten verwendet wird. Normalerweise werden Daten in jeder Tabelle anhand des Primärschlüssels oder Clustered-Indexes sortiert, falls er für die Tabelle definiert ist.
-v Den Namen der Tabelle anzeigen, die entladen wird, sowie die Anzahl der entladenen Zeilen. Diese Option ist nur verfügbar, wenn Sie dbunload von einer Befehlszeile aus ausführen.
-xi Ein externes Entladen durchführen, indem Daten in den dbunload-Client entladen werden, und anschließend die LOAD-Anweisung in der generierten reload-Befehlsdatei reload.sql benutzen, um die Datenbank mit Daten zu füllen.
-xx Ein externes Entladen durchführen, indem Daten in den dbunload-Client entladen werden, und anschließend die Interactive SQL INPUT-Anweisung in der generierten reload-Befehlsdatei reload.sql benutzen, um die Datenbank mit Daten zu füllen.
-y

Bestehende Befehlsdateien ersetzen, ohne zur Bestätigung aufzufordern. Wenn Sie die Option -q angeben, müssen Sie auch -y angeben, sonst schlägt das Entladen fehl, wenn dbunload erkannt, dass eine Befehlsdatei bereits existiert.

Beim Entladen von Datenbanken, die in ein Replikationssystem eingebunden sind, gibt es besondere Punkte zu beachten. Weitere Hinweise finden Sie unter Entfernte Datenbanken extrahieren und Upgrade von SQL Remote.

directory Gibt das Verzeichnis an, in dem die entladenen Daten gespeichert werden sollen. Die Befehlsdatei reload.sql ist immer relativ zum aktuellen Verzeichnis des Benutzers.
Bemerkungen
Upgrade auf Version 11

Hinweise über den Neuaufbau einer bestehenden Datenbank in einer Version 11-Datenbank finden Sie unter Upgrade von SQL Anywhere.

Wenn Sie dbunload mit einer Datenbank der Version 10.0.0 oder höher verwenden, muss die Version von dbunload mit der Version des Datenbankservers übereinstimmen, der für den Zugriff auf die Datenbank verwendet wird. Wenn eine ältere Version von dbunload mit einem neueren Datenbankserver verwendet wird oder umgekehrt, wird ein Fehler gemeldet.

Mit dem Entladen-Dienstprogramm können Sie eine Datenbank entladen und eine Gruppe von Datendateien in ein genanntes Verzeichnis legen. Das Entladen-Dienstprogramm erstellt eine Interactive SQL-Befehlsdatei für den Neuaufbau der Datenbank. Es entlädt ebenfalls alle Daten aus Ihren Tabellen in Dateien im angegebenen Verzeichnis in einem Format mit Kommas als Trennzeichen. Binärdaten werden korrekt durch Escape-Sequenzen repräsentiert.

Internes Entladen/Laden entlädt Informationen über den aktuellen Status jedes Benutzers durch das Ausführen von UPDATE ISYSUSER-Anweisungen. Externes Entladen/Laden enthält diese Informationen nicht und der Status aller Benutzer wird zurückgesetzt. Weitere Hinweise finden Sie unter Überblick über die Verwaltung von Login-Richtlinien.

Wenn Sie eine Datenbank durch Entladen und Neuladen neu aufsetzen, wird die neue Datenbank möglicherweise kleiner sein als die ursprüngliche. Dies kann auf Indexänderungen in SQL Anywhere zurückzuführen sein und weist nicht auf ein Problem oder einen Datenverlust hin.

Hinweis

Datenbanken bis zur Version 9, für die eine Wiederherstellung erforderlich ist, können ab Version 10 des Entladen-Dienstprogramms (dbunload) nicht neu geladen werden. Sie müssen die Datenbank mit einer Version 9 oder früher von dbunload neu laden.

Mit dem Entladen-Dienstprogramm können Sie außerdem eine neue Datenbank direkt aus einer bestehenden erstellen. Dies vermeidet mögliche Sicherheitsprobleme, wenn der Inhalt der Datenbank in eine gewöhnliche Datei geschrieben wird.

Wenn Sie nur Tabellendaten entladen wollen, können Sie das in einem Schritt durchführen, indem Sie das Fenster Daten entladen in Sybase Central verwenden.

Weitere Hinweise finden Sie unter Daten mit dem Fenster Daten entladen exportieren.

Beim Entladen von Datenbanken, die in ein Replikationssystem eingebunden sind, gibt es besondere Punkte zu beachten. Weitere Hinweise finden Sie unter Entfernte Datenbanken extrahieren.

Sie können das Entladen-Dienstprogramm folgendermaßen starten:

Das Entladen-Dienstprogramm muss von einem Benutzer mit DBA-Berechtigung ausgeführt werden. Damit sind Sie sicher, die notwendigen Berechtigungen zum Entladen aller Daten zu haben. Außerdem muss ein reload.sql-Skript von einem Benutzer mit DBA-Datenbankberechtigung ausgeführt werden. (Üblicherweise wird es in einer neuen Datenbank ausgeführt, bei der die einzige Benutzer-ID "DBA" mit dem Kennwort "sql" ist.)

Die Option -gl des Datenbankservers steuert die Berechtigungen, die zum Entladen von Daten aus der Datenbank erforderlich sind. Weitere Hinweise finden Sie unter Serveroption -gl.

Der Benutzer-ID "dbo" gehören eine Reihe von Systemobjekten in einer Datenbank, wie Ansichten und gespeicherte Prozeduren.

Das Entladen-Dienstprogramm entlädt die für die Benutzer-ID "dbo" während der Erstellung der Datenbank erzeugten Objekte nicht. Änderungen an diesen Objekten, wie das Neudefinieren einer Systemprozedur, gehen beim Entladen der Datenbank verloren. Alle Objekte, die von der Benutzer-ID "dbo" seit der Initialisierung der Datenbank erstellt wurden, werden vom Entladen-Dienstprogramm entladen, und diese Objekte bleiben so erhalten.

Wenn Sie eine Datenbank entladen, werden Änderungen bei Berechtigungen für Systemobjekte nicht entladen. Sie müssen diese Berechtigungen in der neuen Datenbank erneut erteilen bzw. entziehen.

Tipp

Bevor Sie Ihre Datenbank neu aufbauen, wird empfohlen, dass Sie den Neuladeprozess validieren, indem Sie die Datenbank ohne Daten mit einem Befehl der folgenden Art neu laden:

dbunload -n -an new.db -c "UID=Ihre_Benutzer-ID;PWD=your-Kennwort;DBF=Original-Datenbankdatei"

Sie sollten dann alle eventuell erkannten Probleme in der Originaldatenbank beheben, bevor Sie ein Neuladen durchführen.

Im Standardmodus bzw. wenn -ii bzw. -ix verwendet wird, ist das von dbunload für die Daten verwendete Verzeichnis relativ zum Datenbankserver und nicht zum aktuellen Verzeichnis des Benutzers.

Wenn -xi oder -xx verwendet wird, ist das Verzeichnis relativ zum aktuellen Verzeichnis des Benutzers.

Weitere Hinweise zum Angeben eines Dateinames und Suchpfads in diesem Modus finden Sie unter UNLOAD-Anweisung.

Wenn keine Tabellenliste angegeben ist, wird die gesamte Datenbank entladen. Wenn eine Tabellenliste angegeben wird, werden nur diese Tabellen entladen.

Entladene Daten enthalten die Spaltenliste für die LOAD TABLE-Anweisungen, die in der Datei reload.sql generiert wurden. Das Entladen der Spaltenliste erleichtert die Neuordnung der Spalten in einer Tabelle. Tabellen können gelöscht oder neu erstellt und die Daten anschließend mit reload.sql übernommen werden.

Die von dbunload generierten LOAD TABLE-Anweisungen deaktivieren Prüf-Integritätsregeln und berechnete Spalten.

Beendigungscodes sind 0 (Erfolg) oder eine von 0 verschiedene Zahl (Fehlschlag). Weitere Hinweise finden Sie unter Beendigungscodes der Softwarekomponenten.

Datenbanken mit materialisierten Ansichten

Es wird empfohlen, dass Sie materialisierte Ansichten in Ihrer Datenbank aktualisieren, nachdem die Datenbank neu aufgebaut wurde. Weitere Hinweise finden Sie unter Manuelle Ansichten aktualisieren.

Datenbanken, in denen die Diagnoseprotokollierung läuft

Protokollierungsdaten werden nicht als Teil eines Datenbank-Entladungs- oder -Aktualisierungsvorgangs entladen. Wenn Sie Protokollierungsdaten von einer Datenbank auf eine andere übertragen wollen, müssen Sie dies manuell tun, indem Sie den Inhalt der sa_diagnostic_*-Tabellen kopieren. Dies wird allerdings nicht empfohlen.

Vergleich von externem Entladen und Neuladen

Die folgenden Optionen bieten Kombinationen von internem und externem Entladen und Neuladen: -ii, -ix, -xi und -xx. Eine deutliche Performancesteigerung kann mithilfe von internen Befehlen (UNLOAD/LOAD) anstelle von externen Befehlen (INPUT- und OUTPUT-Anweisungen von Interactive SQL) erzielt werden. Interne Befehle werden jedoch vom Server ausgeführt, deshalb sind Datei- und Verzeichnispfade relativ zur Position des Datenbankservers. Wenn externe Befehle verwendet werden, sind Datei- und Verzeichnispfade relativ zum aktuellen Verzeichnis des Benutzers.

In Sybase Central können Sie angeben, ob Sie relativ zum Server oder zum Client entladen wollen. Weitere Hinweise finden Sie unter UNLOAD-Anweisung.

Wenn Sie das externe Entladen und Neuladen verwenden, um eine Datenbank zu entladen, neu zu laden oder neu aufzubauen, und der Zeichensatz der Datenbank inkompatibel mit dem Zeichensatz auf dem Hostsystem ist, auf dem dbunload ausgeführt wird, führt die Zeichensatzkonvertierung möglicherweise zu einer Beschädigung der Daten, da sie zwischen dem Datenbank-Zeichensatz und dem Zeichensatz des Hostsystems konvertiert werden.

Um dieses Problem zu vermeiden, geben Sie den Datenbank-Zeichensatz in der Verbindungszeichenfolge für die Datenbank (Optionen -c und -ac) an. Beispiel: Wenn der Datenbank-Zeichensatz UTF-8 ist, sollten Sie "charset=utf-8" in die Verbindungszeichenfolgen aufnehmen:

dbunload -c UID=Benutzer-ID;PWD=Kennwort;
CHARSET=utf-8;DBF=Dateiname -ac UID=Benutzer-ID;
PWD=Kennwort;CHARSET=utf-8;ENG=Servername -xx

Wenn Sie ein externes Entladen durchführen, enthält der Beginn der Datei reload.sql eine auskommentiert CREATE DATABASE-Anweisung. Diese Anweisung kann verwendet werden, um eine Datenbank zu erstellen, die mit der entladenen Datenbank übereinstimmt.

Wenn die entladene Datenbank mit Version 9 oder einer früheren Version von SQL Anywhere erstellt wurde und eine benutzerdefinierte Kollatierung verwendete, wird die COLLATION-Klausel wie folgt angezeigt:

COLLATION Kollatierungslabel DEFINITION Kollatierungsdefinition

Dabei gilt: Kollatierungsdefinition ist eine Zeichenfolge, die die benutzerdefinierte Kollatierung angibt.

Die einzige Art, eine benutzerdefinierte Kollatierung zu bewahren, besteht in einem Neuaufbau der Datenbank in einem einzigen Schritt (internes Entladen). Wenn Sie wählen, die Datenbank zu entladen und dann das Schema und die Daten in eine erstellte Datenbank zu laden, müssen Sie eine der unterstützten Kollatierungen verwenden.

Wenn die entladene Datenbank mit starker Verschlüsselung erstellt wurde, wird der Wert des KEY-Schlüssels in der CREATE DATABASE-Anweisung in Form von drei Fragezeichen angezeigt (???).

Fehlgeschlagene Entladevorgänge

Wenn ein Fehler während eines internen Neuaufbaus einer Datenbank unter Verwendung der Option -ar oder -an auftritt, nachdem die Tabellendaten neu geladen und etwaige Indizes auf der Tabelle neu aufgebaut wurden, erstellt dbunload eine Datei namens unprocessed.sql im aktuellen Verzeichnis. Diese Datei enthält alle Anweisungen, die aufgrund des Fehlers nicht ausgeführt wurden, sowie die Anweisung, die den Fehler verursachte, als Kommentar. Das Folgende ist ein Beispiel für eine unprocessed.sql-Datei:

-- Das Neuladen der Datenbank ist mit folgendem Fehler fehlgeschlagen:
-- ***** SQL-Fehler: der_SQL_Fehler 
-- Dieses Skript enthält die Anweisungen, die als Folge des Fehlers
-- nicht ausgeführt wurden. Die Anweisung, die den Fehler bewirkte, wird
-- unten kommentiert. Um das Neuladen abzuschließen, beheben Sie den Fehler
-- in der Anweisung, entfernen Sie die Kommentare und führen Sie dieses Skript aus. 
/*
die fehlgeschlagene Anweisung
go

*/

setuser "DBA" 
go

... Rest der zu verarbeitenden Anweisungen

In dieser Datei können Sie die fehlerhaften Anweisungen korrigieren, entfernen oder verändern. Die Datei unprocessed.sql wird nur erstellt, nachdem alle Tabellendaten und referenziellen Integritätsregeln neu geladen wurden. Mit Interactive SQL können Sie sich mit der neuen Datenbank verbinden und die aktualisierte unprocessed.sql-Datei ausführen. Damit können Sie den Neuaufbau der Datenbank abschließen, ohne den Neuaufbau mehrfach durchführen zu müssen. Damit sparen Sie möglicherweise viel Zeit.

Wenn die unprocessed.sql-Datei generiert wird, stoppt dbunload und gibt einen Fehlercode aus, um andere Tools und Skripten vom fehlgeschlagenen Neuaufbau zu verständigen.

Verschlüsselte Datenbanken

Beim Neuaufbau einer Datenbank mit aktivierter Tabellenverschlüsselung müssen Sie entweder -er oder -et angeben, um anzuzeigen, ob bei der neuen Datenbank die Tabellenverschlüsselung aktiviert ist. Andernfalls erhalten Sie einen Fehler, wenn Sie versuchen, Daten in die neue Datenbank zu laden.

Wenn Sie eine stark verschlüsselte Datenbank entladen möchten, müssen Sie den Chiffrierschlüssel angeben. Sie können den Verbindungsparameter DatabaseKey (DBKEY) verwenden, um den Schlüssel im Befehl anzugeben. Oder Sie verwenden die Option -ep, wenn Sie zur Eingabe des Chiffrierschlüssels aufgefordert werden wollen, anstatt ihn vor aller Augen in der Befehlszeile eingeben zu müssen, und zwar folgendermaßen:

dbunload -c "DBF=enc.db;START=dbeng11 -ep"

Wenn Sie die Option -an zum Entladen der Datenbank und Neuladen in eine andere Datenbank verwenden und den Chiffrierschlüssel für die neue Datenbank mit den Optionen -ek oder -ep angeben wollen, beachten Sie Folgendes:

  • Wenn die ursprüngliche Datenbank stark verschlüsselt ist, müssen Sie den Schlüssel für die ursprüngliche Datenbank mit dem Verbindungsparameter DatabaseKey (DBKEY) in der Option -c angeben, und nicht mit der Option -ek oder -ep.

  • Mit den Optionen -ek und -ep ist es möglich, eine nicht verschlüsselte Datenbank zu entladen und sie wieder in eine neue, stark verschlüsselte Datenbank zu laden. Wenn Sie die Optionen -ep und -an verwenden, müssen Sie den Schlüssel korrekt bestätigen, damit das Entladen nicht fehlschlägt.

  • Wenn die ursprüngliche Datenbank stark verschlüsselt ist, aber die Optionen -ek und -ep nicht verwendet werden, wird die neue Datenbank mit einfacher Verschlüsselung verschlüsselt.

  • Die Optionen -ek und -ep werden ignoriert, wenn -an nicht angegeben wird. Die dbunload-Optionen -ek und -ep gelten bei einer neuen Datenbank, während die Optionen der Datenbankserver (dbeng11/dbsrv11) und "DBKEY=" bei bestehenden Datenbanken gelten.

  • Wenn Sie an Replikations- oder Synchronisationssystemen beteiligte Datenbanken neu aufbauen, nimmt dbunload an, dass der mit der Option -ek oder -ep angegebene Chiffrierschlüssel der Chiffrierschlüssel der ursprünglichen Datenbank wie auch der Chiffrierschlüssel der neu aufgebauten Datenbank ist.

Weitere Hinweise zur Verschlüsselung finden Sie unter Serveroption -ep und DatabaseKey-Verbindungsparameter [DBKEY].

Eine Datenbank neu aufbauen

Um eine Datenbank zu entladen, stellen Sie zuerst sicher, dass die Datenbank nicht bereits läuft. Dann führen Sie dbunload aus, indem Sie einen DBA-Benutzer und Kennwort angeben und die Datenbank mit dem Verbindungsparameter "DBF=" referenzieren.

Um eine Datenbank neu zu laden, erstellen Sie eine neue Datenbank und führen dann die erzeugte Befehlsdatei reload.sql über Interactive SQL aus.

Um die Entlade- und Neulade-Schritte zu kombinieren, befolgen Sie die obenstehenden Anleitungen und fügen die Option -an hinzu, um den Namen der neuen Datenbank anzugeben. Siehe die Beschreibung der Optionen -ac und -an.