Es wird empfohlen, die Datenbank vor ihrer Neuerstellung zu sichern.
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.
Weitere Informationen über das Upgrade von Windows Mobile-Datenbanken finden Sie unter Neuaufbau von Datenbanken unter Windows Mobile.
SQL Anywhere 9.0.2 für Mac OS X wurde auf PPC unterstützt, während SQL Anywhere 10.0.0 und höher für Mac OS X auf Intel unterstützt wird. Wenn Sie eine Datenbank der Version 9.0.2 oder früher unter Mac OS X betreiben, gibt es zwei Möglichkeiten zum Entladen der Datenbank:
Sie entladen die Datenbank mit der Version 9.0.2.
Sie kopieren die Datenbank auf eine andere Plattform, auf der SQL Anywhere 12 installiert ist, und entladen die Datenbank dann mithilfe der Version 12.
Wenn die Datenbank entladen wurde, können Sie sie mit der Version 12 auf Mac OS X neu laden.
Das Entladen und Neuladen einer großen Datenbank kann zeitaufwändig sein und viel Plattenspeicher benötigen. Der für den Vorgang erforderliche Plattenspeicher entspricht etwa der doppelten Datenbankgröße, um die entladenen und neu geladenen Daten zu speichern.
Es gibt einige Einschränkungen, die beim Neuaufbau von Datenbanken bis Version 9 mit den Tools der Version 12 beachtet werden müssen:
Sie müssen die Datenbank von allen früheren Versionen des Datenbankservers trennen und alle früheren Datenbankserver, die auf dem Computer ausgeführt werden, herunterfahren. Außerdem müssen alle Datenbankserver der Version 12 heruntergefahren werden, die auf dem Computer laufen. Wenn dbunload nicht fortgesetzt werden kann, da das Programm einen solchen Datenbankserver erkennt, gibt es einen Fehler aus und schlägt fehl.
Beziehen Sie die Verbindungsparameter ENG, START oder LINKS nicht in die Verbindungszeichenfolge für die alte Datenbank ein (angegeben in der Option -c). Wenn Sie diese Parameter angeben, werden sie ignoriert und eine Warnung wird angezeigt. Geben Sie in Sybase Central im Fenster Verbinden keine Werte in die Felder Servername und Startzeile ein.
Sie müssen dbunload auf einem Computer mit direktem Dateisystemzugriff auf die alte Datenbank ausführen (dbunload muss in der Lage sein, eine Verbindung mit der Datenbank unter Verwendung von Shared Memory herzustellen).
Es ist nicht möglich, einen Datenbankserver mit dem Namen dbunload_support_engine auf dem Computer auszuführen, auf dem die Neuerstellung durchgeführt wird.
Sie können eine Datenbank der Version 9 oder früher nicht entladen, wenn für die Datenbankdatei eine Wiederherstellung erforderlich ist. Wenn Sie das Dienstprogramm zum Entladen (dbunload) für eine Datenbankdatei verwenden, für die eine Wiederherstellung erforderlich ist, wird eine Meldung zurückgegeben, die darüber informiert, dass die Datenbank nicht gestartet werden konnte. Verwenden Sie einen Datenbankserver der Version 9, um die Datenbank zu starten, und stoppen Sie dann die Datenbank, bevor Sie nochmals versuchen, dbunload auszuführen. Um eine Datenbank der Version 9 oder höher zu entladen, müssen Sie die Datenbank im schreibgeschützten Modus starten können. Siehe -r - dbeng12/dbsrv12-Datenbankoption.
Groß- und Kleinschreibung bei Kennwörtern In neu erstellten SQL Anywhere-Datenbanken der Version 12 berücksichtigen alle Kennwörter die Groß- und Kleinschreibung, unabhängig davon, ob die Datenbank die Groß- und Kleinschreibung berücksichtigt. Das DBA-Standardkennwort neuer Datenbanken lautet sql.
Wenn Sie eine vorhandene Datenbank neu erstellen, legt SQL Anywhere wie folgt fest, ob das Kennwort die Groß- und Kleinschreibung berücksichtigt:
Wenn das Kennwort ursprünglich in eine Datenbank eingegeben wurde, in der die Groß- und Kleinschreibung nicht berücksichtigt wurde, wird bei dem Kennwort weiterhin die Groß- und Kleinschreibung nicht berücksichtigt.
Wenn das Kennwort ursprünglich in eine Datenbank eingegeben wurde, in der die Groß- und Kleinschreibung berücksichtigt wurde, wird die Schreibweise bei Kennwörtern in Großschreibung und in einer Mischung aus Groß- und Kleinschreibung weiterhin berücksichtigt. Wenn das Kennwort jedoch in Kleinschreibung eingegeben wurde, wird die Groß- und Kleinschreibung nicht berücksichtigt.
Bei Änderungen vorhandener Kennwörter sowie bei neuen Kennwörtern wird die Groß- und Kleinschreibung berücksichtigt.
Seitengrößen Die Standardgröße der Datenbankseiten für SQL Anywhere 12 ist 4096 Byte. In Version 12 werden die Seitengrößen 2048 Byte, 4096 Byte, 8192 Byte, 16384 Byte und 32768 Byte unterstützt. Wenn Ihre alte Datenbank eine nicht unterstützte Seitengröße verwendet, hat die neue Datenbank standardmäßig die Seitengröße von 4096 Byte. Sie können die dbinit-Option -p oder die dbunload-Option -ap verwenden, um eine andere Seitengröße festzulegen. Siehe Dienstprogramm Initialisierung (dbinit) und Entladen-Dienstprogramm (dbunload).
Kollatierungen In Version 9 und früher unterstützte SQL Anywhere eine Kollatierung mit CHAR-Datentypen. Diese Kollatierung hat den SQL Anywhere-Kollatierungsalgorithmus (SQL Anywhere Collation Algorithm, SACA) verwendet. In Version 10 und höher unterstützt SQL Anywhere die beiden Kollatierungsalgorithmen SACA und UCA (Unicode Collation Algorithm). Die SACA-Kollatierung der alten Datenbank wird entladen und in der neu aufgebauten Datenbank erneut verwendet, außer Sie legen eine neue oder andere Kollatierung für die neu aufgebaute Datenbank fest.
Wenn Sie eine Datenbank mit einer benutzerdefinierten Kollatierung neu aufbauen, wird die Kollatierung nur beibehalten, wenn Sie sie in einem einzigen Schritt neu aufbauen (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. Siehe Unterstützte und alternative Kollatierungen.
Datenbankdateigröße Aufgrund von Indexänderungen in SQL Anywhere kann es vorkommen, dass eine Datenbank nach dem Neuaufbau durch Entladen und Neuladen kleiner ist als die ursprüngliche Datenbank. Die geringere Datenbankgröße ist kein Hinweis auf ein Problem oder einen Datenverlust.
Falls die Neuerstellung fehlschlägt, wenn Sie dbunload oder den Assistenten zum Entladen einer Datenbank ausführen, können Sie mit den folgenden Schritten die Ursache für den Fehler ermitteln.
Führen Sie in der alten Datenbank dbunload -n aus. Die Daten werden nicht entladen, da -n angegeben wurde.
dbunload -c "connection-string" -n directory-name |
Erstellen Sie eine neue, leere Datenbank der Version 12.
dbinit test.db |
Wenden Sie die Datei reload.sql auf die leere Datenbank an.
dbisql -c "DBF=test.db;UID=DBA;pwd=sql" reload.sql |
Nehmen Sie basierend auf den Meldungen, die Sie erhalten, Änderungen an der Datei reload.sql oder der ursprünglichen Datenbank vor, wenn Sie die Datei reload.sql auf die neue Datenbank anwenden.
Die folgende Tabelle listet bekannte Probleme, die zu einem Fehlschlag der Neuerstellung führen, sowie die jeweiligen Lösungen auf.
Bekanntes Problem | Lösung | ||
---|---|---|---|
Eine DECLARE LOCAL TEMPORARY TABLE-Anweisung in einer Prozedur oder einem Trigger verursacht einen Syntaxfehler, wenn der Tabellenname einen Eigentümernamen als Präfix hat. | Entfernen Sie den Eigentümernamen. | ||
Wenn eine CREATE TRIGGER-Anweisung keinen Eigentümernamen für die Tabelle enthält, für die der Trigger definiert wurde, und die Tabelle mit einem Eigentümer qualifiziert werden muss, wenn sie von dem Benutzer referenziert wird, der die Datei reload.sql ausführt, schlägt die Anweisung fehl. Es wird ein Fehler ausgegeben, der darauf hinweist, dass die Tabelle nicht gefunden wurde. | Stellen Sie dem Tabellennamen den Eigentümernamen als Präfix voran. | ||
Wenn ein Objektname (z.B. eine Tabelle, Spalte, Variable oder ein Parametername) ein reserviertes Wort ist, das in einer höheren Version von SQL Anywhere eingeführt wurde (z.B. NCHAR), schlägt das erneute Laden fehl. Beispiel:
|
Ändern Sie alle Verweise auf das reservierte Wort, indem Sie einen anderen Namen verwenden. Bei Variablennamen ist die Verwendung des Präfixes @ eine allgemeine Konvention, die Namenskonflikte vermeidet. Eine vollständige Liste der reservierten Wörter finden Sie unter Reservierte Wörter. |
||
Wenn eine Datenbank mit dbunload aus Version 9 oder früher entladen wird, kann die Datei reload.sql Aufrufe der ml_add_property-Systemprozedur enthalten, doch diese Prozedur ist in einer neuen Datenbank der Version 12 nicht enthalten. |
Entladen Sie die Datenbank mit dem dbunload-Dienstprogramm der Version 12. Weitere Hinweise dazu, wie Sie sicherstellen können, dass die richtige Version der Datenbank-Dienstprogramme verwendet wird, finden Sie unter Dienstprogrammversionen und Upgradevorgang. |
||
Wenn Sie eine Datenbank mit dem Dienstprogramm dbunload aus Version 9 oder früher entladen, werden Ansichten, die Transact-SQL-Outer-Joins (Angabe *= or =*) verwenden, möglicherweise nicht richtig erstellt, wenn sie erneut geladen werden. |
Fügen Sie die folgende Zeile in das Neulade-Skript ein:
Sie sollten später alle Ansichten, die Transact-SQL-Outer-Joins verwenden, neu erstellen. |
||
Die [NOT] DETERMINISTIC-Klausel wird von den Anweisungen CREATE PROCEDURE und ALTER PROCEDURE nicht unterstützt. Wenn die Klausel vorhanden ist, schlägt das erneute Laden fehl und es wird ein Syntaxfehler gemeldet. | Wenn Sie ein Upgrade einer Datenbank durchführen, die benutzerdefinierte Prozeduren enthält, die die [NOT] DETERMINISTIC-Klausel enthalten, müssen Sie die Klausel entfernen, bevor Sie die Datenbank entladen und neu laden. |
Sie können mit dem Assistenten zum Entladen einer Datenbank eine alte Datenbank neu erstellen. Sie können die Datenbank mit dem Assistenten in eine Reload-Datei und in Datendateien entladen, in eine neue Datenbank entladen und neu laden oder in eine vorhandene Datenbank entladen und neu laden. Es wird dringend empfohlen, die Datenbank vor ihrer Neuerstellung zu sichern.
Die Datenbankdatei muss sich auf demselben Computer befinden wie die SQL Anywhere 12-Installation.
Es ist nicht möglich, eine Teilmenge von Tabellen aus einer Datenbank zu entladen. Sie müssen hierzu das Dientsprogramm dbunload verwenden.
Wenn der Assistent zum Entladen der Datenbank feststellt, dass die Datenbankdatei bereits läuft, wird die Datenbank gestoppt, bevor der Entladevorgang ausgeführt wird.
Befolgen Sie die Standard-Sicherheitsvorkehrungen für ein Software-Upgrade. Siehe Upgrade-Sicherheitsvorkehrungen.
Defragmentieren Sie, wenn möglich, das Laufwerk, auf dem die neue Datenbank gespeichert werden soll, da ein fragmentiertes Laufwerk die Performance der Datenbank beeinträchtigen kann.
Stellen Sie sicher, dass nur Sie allein auf die entsprechende Datenbank zugreifen können. Es dürfen keine anderen Benutzer verbunden sein.
Klicken Sie auf Start » Programme » SQL Anywhere 12 » Administrationstools » Sybase Central.
Klicken Sie auf Extras » SQL Anywhere 12 » Datenbank entladen.
Lesen Sie die Einführungsseite des Assistenten zum Entladen einer Datenbank, und klicken Sie dann auf Weiter.
Klicken Sie auf Auf einer früheren Version des Servers laufende oder nicht aktive Datenbank entladen. Geben Sie die Verbindungsparameter für die Datenbank an. Klicken Sie auf Weiter.
Klicken Sie auf Entladen und in eine neue Datenbank laden. Klicken Sie auf Weiter.
Geben Sie einen neuen Dateinamen für die Datenbank an. Klicken Sie auf Weiter.
Sie können die Seitengröße für die neue Datenbank festlegen. In Version 12 beträgt die standardmäßige (und empfohlene) Seitengröße 4096 Byte.
Sie können die Datenbankdatei verschlüsseln. Wenn Sie die starke Verschlüsselung wählen, müssen Sie bei jedem Start der Datenbank den Chiffrierschlüssel verwenden. Siehe Datenbankverschlüsselung und -entschlüsselung.
Wählen Sie "Struktur und Daten entladen". Klicken Sie auf Weiter.
Legen Sie fest, ob nach dem Neuaufbau eine Verbindung mit der neuen Datenbank hergestellt werden soll.
Klicken Sie auf Fertig stellen. Überprüfen Sie die neue Datenbank, um sicherzustellen, dass der Neuaufbau einwandfrei abgeschlossen wurde.
Sie können mit dem Dienstprogramm Entladen (dbunload) mit der Option -an oder -ar eine alte Datenbank neu erstellen. Die Option -an wird empfohlen, weil sie eine neue Datenbank erstellt und dabei die ursprüngliche Datenbank intakt lässt. Die Option -ar ersetzt die alte Datenbank durch eine neue Datenbank der Version 12
Befolgen Sie die Standard-Sicherheitsvorkehrungen für ein Software-Upgrade. Siehe Upgrade-Sicherheitsvorkehrungen.
Stellen Sie sicher, dass die Dienstprogramme der Version 12 in Ihrem Systempfad vor den anderen Dienstprogrammen aufgeführt sind. Siehe Dienstprogrammversionen und Upgradevorgang.
Fahren Sie alle SQL Anywhere- und Adaptive Server Anywhere-Datenbankserver herunter, da das dbunload-Dienstprogramm der Version 12 nicht für eine Datenbank verwendet werden kann, die auf einer früheren Version des Datenbankservers läuft. Beispiel:
dbstop -c "DBF=mydb.db;UID=DBA;PWD=sql" |
Defragmentieren Sie, wenn möglich, das Laufwerk, auf dem die neue Datenbank gespeichert werden soll, da ein fragmentiertes Laufwerk die Performance der Datenbank beeinträchtigen kann.
Sichern Sie die Datenbank. Zum Beispiel:
dbbackup -c "DBF=mydb.db;UID=DBA;PWD=sql" old-db-backup-dir |
Siehe Sichern von Datenbanken.
Führen Sie das Dienstprogramm Entladen (dbunload) mit der Option -an oder -ar aus, um eine neue Datenbank zu erstellen.
dbunload -c "connection-string" -an database-filename |
Beispiel:
dbunload -c "DBF=mydb.db;UID=DBA;PWD=sql" -an mydb12.db |
Der in der Verbindungszeichenfolge angegebene Datenbankbenutzer muss eine Verbindung zur betreffenden Datenbank mit DBA-Berechtigung herstellen. Dieser Befehl erstellt eine neue Datenbank (mit der Option -an). Wenn Sie die Option -ar angeben, wird die vorhandene Datenbank durch eine neu aufgebaute Datenbank ersetzt. Um die Option -ar zu verwenden, müssen Sie eine Verbindung zu einem Personal Server oder einem Netzwerkserver auf demselben Computer herstellen, auf dem sich das Dienstprogramm Entladen (dbunload) befindet.
Weitere Hinweise zu den anderen für das Dienstprogramm Entladen (dbunload) verfügbaren Optionen finden Sie unter Entladen-Dienstprogramm (dbunload).
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |