FirebirdSQL logo
 Data Definition (DDL)-AnweisungenSHADOW 

Erstellen einer Datenbank auf einem Remote-Server

Wenn Sie eine Datenbank auf einem Remote-Server erstellen, müssen Sie die Remote-Server-Spezifikation angeben.Die Spezifikation des Remote-Servers hängt vom verwendeten Protokoll ab.Wenn Sie das TCP/IP-Protokoll verwenden, um eine Datenbank zu erstellen, sollte die primäre Dateispezifikation wie folgt aussehen:

host[/{port|service}]:{filepath | db_alias}

Wenn Sie das Named Pipes-Protokoll verwenden, um eine Datenbank auf einem Windows-Server zu erstellen, sollte die primäre Dateispezifikation so aussehen:

\\host\{filepath | db_alias}

Firebird hat auch eine einheitliche URL-ähnliche Syntax für die Remote-Server-Spezifikation.In dieser Syntax gibt der erste Teil den Namen des Protokolls an, dann einen Hostnamen oder eine IP-Adresse, eine Portnummer und einen Pfad der primären Datenbankdatei oder einen Alias.

Als Protokoll können folgende Werte angegeben werden:

inet

TCP/IP (versucht zuerst eine Verbindung über das IPv6-Protokoll herzustellen, wenn dies fehlschlägt, dann IPv4)

inet4

TCP/IP v4

inet6

TCP/IP v6

wnet

NetBEUI oder Named Pipes Protocol

xnet

lokales Protokoll (enthält keinen Host-, Port- und Servicenamen)

<protocol>://[host[:{port | service}]/]{filepath | db_alias}

Optionale Parameter für CREATE DATABASE

USER und PASSWORD

Klauseln zur Angabe des Benutzernamens bzw. des Passworts eines bestehenden Benutzers in der Sicherheitsdatenbank (security4.fdb oder was auch immer in der SecurityDatabase Konfiguration konfiguriert ist).Sie müssen den Benutzernamen und das Kennwort nicht angeben, wenn die Umgebungsvariablen ISC_USER und ISC_PASSWORD gesetzt sind.Der beim Erstellen der Datenbank angegebene Benutzer ist der Eigentümer.Dies ist wichtig, wenn Sie Datenbank- und Objektberechtigungen berücksichtigen.

ROLE

Die ROLE-Klausel gibt den Namen der Rolle an (normalerweise RDB$ADMIN), die beim Erstellen der Datenbank berücksichtigt wird.Die Rolle muss dem Benutzer in der entsprechenden Sicherheitsdatenbank zugewiesen werden.

PAGE_SIZE

Klausel zum Angeben der Datenbankseitengröße.Diese Größe wird für die Primärdatei und alle Sekundärdateien der Datenbank festgelegt.Wenn Sie eine Datenbankseitengröße von weniger als 4.096 angeben, wird sie automatisch auf 4.096 aufgerundet.Andere Werte, die nicht gleich 4.096, 8.192, 16.384 oder 32.768 sind, werden auf den nächst kleineren unterstützten Wert geändert.Wenn die Datenbankseitengröße nicht angegeben wird, wird sie auf den Standardwert 8.192 gesetzt.

Note
Größer ist nicht immer besser.

Höhere Seitengrößen können mehr Datensätze auf einer einzelnen Seite unterbringen, haben breitere Indizes und mehr Indizes, verschwenden aber auch mehr Platz für Blobs (vergleichen Sie den verschwendeten Speicherplatz eines 3KB-Blobs auf der Seitengröße 4096 mit einem auf 32768: +/- 1 KB vs +/- 29 KB) und erhöhen den Speicherverbrauch des Seitencaches.

LENGTH

Klausel, die die maximale Größe der primären oder sekundären Datenbankdatei in Seiten angibt.Wenn eine Datenbank erstellt wird, belegen ihre Primär- und Sekundärdateien die minimale Anzahl von Seiten, die zum Speichern der Systemdaten erforderlich sind, unabhängig von dem in der LENGTH-Klausel angegebenen Wert.Der Wert LENGTH hat keinen Einfluss auf die Größe der einzigen (oder letzten, in einer Datenbank mit mehreren Dateien) Datei.Die Datei wird bei Bedarf automatisch weiter vergrößert.

SET NAMES

Klausel, die den Zeichensatz der verfügbaren Verbindung angibt, nachdem die Datenbank erfolgreich erstellt wurde.Standardmäßig wird der Zeichensatz NONE verwendet.Beachten Sie, dass der Zeichensatz in ein Paar Apostrophe (einfache Anführungszeichen) eingeschlossen werden sollte.

DEFAULT CHARACTER SET

Klausel, die den Standardzeichensatz zum Erstellen von Datenstrukturen von Zeichenfolgendatentypen angibt.Zeichensätze werden für die Datentypen CHAR, VARCHAR und BLOB SUB_TYPE TEXT verwendet.Standardmäßig wird der Zeichensatz NONE verwendet.Es ist auch möglich, die Standard-"COLLATION" für den Standardzeichensatz anzugeben, wodurch diese Kollatierungssequenz zum Standard für den Standardzeichensatz wird.Der Standardwert wird für die gesamte Datenbank verwendet, es sei denn, ein alternativer Zeichensatz mit oder ohne festgelegter Sortierung wird explizit für ein Feld, eine Domäne, eine Variable, einen Umwandlungsausdruck usw. verwendet.

STARTING AT

Klausel, die die Seitennummer der Datenbank angibt, bei der die nächste sekundäre Datenbankdatei beginnen soll.Wenn die vorherige Datei gemäß der angegebenen Seitenzahl vollständig mit Daten gefüllt ist, beginnt das System, der nächsten Datenbankdatei neue Daten hinzuzufügen.

DIFFERENCE FILE

Klausel, die den Pfad und den Namen für das Datei-Delta angibt, das alle Mutationen in der Datenbankdatei speichert, nachdem sie durch die Anweisung ALTER DATABASE BEGIN BACKUP in den "kopiersicheren" Modus geschaltet wurde.Eine detaillierte Beschreibung dieser Klausel finden Sie unter ALTER DATABASE.

docnext count = 10

Angabe des Datenbankdialekts

Datenbanken werden standardmäßig in Dialekt 3 erstellt.Damit die Datenbank im SQL-Dialekt 1 erstellt wird, müssen Sie die Anweisung SET SQL DIALECT 1 aus dem Skript oder der Client-Anwendung ausführen, z.B. in isql vor der CREATE DATABASE-Anweisung.

Wer kann eine Datenbank erstellen?

Die CREATE DATABASE-Anweisung kann ausgeführt werden durch:

Beispiele für die Verwendung von CREATE DATABASE

  1. Erstellen einer Datenbank in Windows, die sich auf Datenträger D mit einer Seitengröße von 4.096 befindet.Der Eigentümer der Datenbank ist der Benutzer wizard.Die Datenbank ist in Dialekt und verwendet WIN1251 als Standardzeichensatz.

    SET SQL DIALECT 1;
    CREATE DATABASE 'D:\test.fdb'
    USER 'wizard' PASSWORD 'player'
    PAGE_SIZE = 4096 DEFAULT CHARACTER SET WIN1251;
  2. Erstellen einer Datenbank im Linux-Betriebssystem mit einer Seitengröße von 8.192 (Standard).Der Eigentümer der Datenbank ist der Benutzer wizard.Die Datenbank wird in Dialekt 3 sein und verwendet UTF8 als Standardzeichensatz mit UNICODE_CI_AI als Standardsortierung.

    CREATE DATABASE '/home/firebird/test.fdb'
    USER 'wizard' PASSWORD 'player'
    DEFAULT CHARACTER SET UTF8 COLLATION UNICODE_CI_AI;
  3. Erstellen einer Datenbank auf dem entfernten Server “baseserver” mit dem im Alias “test” angegebenen Pfad, der zuvor in der Datei databases.conf definiert wurde.Es wird das TCP/IP-Protokoll verwendet.Der Eigentümer der Datenbank ist der Benutzer wizard.Die Datenbank wird in Dialekt 3 sein und verwendet UTF8 als Standardzeichensatz.

    CREATE DATABASE 'baseserver:test'
    USER 'wizard' PASSWORD 'player'
    DEFAULT CHARACTER SET UTF8;
  4. Erstellen einer Datenbank in Dialekt 3 mit UTF8 als Standardzeichensatz.Die Primärdatei enthält bis zu 10.000 Seiten mit einer Seitengröße von 8.192.Sobald die Primärdatei die maximale Seitenzahl erreicht hat, beginnt Firebird damit, Seiten der Sekundärdatei test.fdb2 zuzuordnen.Wenn auch diese Datei maximal gefüllt ist, wird test.fdb3 der Empfänger aller neuen Seitenzuweisungen.Als letzte Datei hat Firebird keine Seitenbegrenzung.Neue Zuweisungen werden so lange fortgesetzt, wie das Dateisystem dies zulässt oder bis auf dem Speichergerät kein freier Speicherplatz mehr vorhanden ist.Wenn für diese letzte Datei ein LENGTH-Parameter angegeben würde, würde er ignoriert.

    SET SQL DIALECT 3;
    CREATE DATABASE 'baseserver:D:\test.fdb'
    USER 'wizard' PASSWORD 'player'
    PAGE_SIZE = 8192
    DEFAULT CHARACTER SET UTF8
    FILE 'D:\test.fdb2'
    STARTING AT PAGE 10001
    FILE 'D:\test.fdb3'
    STARTING AT PAGE 20001;
  5. Erstellen einer Datenbank in Dialekt 3 mit UTF8 als Standardzeichensatz.Die Primärdatei enthält bis zu 10.000 Seiten mit einer Seitengröße von 8.192.In Bezug auf die Dateigröße und die Verwendung von Sekundärdateien verhält sich diese Datenbank genau wie im vorherigen Beispiel.

    SET SQL DIALECT 3;
    CREATE DATABASE 'baseserver:D:\test.fdb'
    USER 'wizard' PASSWORD 'player'
    PAGE_SIZE = 8192
    LENGTH 10000 PAGES
    DEFAULT CHARACTER SET UTF8
    FILE 'D:\test.fdb2'
    FILE 'D:\test.fdb3'
    STARTING AT PAGE 20001;

ALTER DATABASE

Verwendet für

Ändern der Dateiorganisation einer Datenbank, Umschalten ihres "kopiersicheren" Zustands, Verwalten der Verschlüsselung und anderer datenbankweiter Konfigurationen

Verfügbar in

DSQL, ESQL — eingeschränkter Funktionsumfang

Syntax
ALTER {DATABASE | SCHEMA} <alter_db_option> [<alter_db_option> ...]

<alter_db_option> :==
    <add_sec_clause>
  | {ADD DIFFERENCE FILE 'diff_file' | DROP DIFFERENCE FILE}
  | {BEGIN | END} BACKUP
  | SET DEFAULT CHARACTER SET charset
  | {ENCRYPT WITH plugin_name [KEY key_name] | DECRYPT}
  | SET LINGER TO linger_duration
  | DROP LINGER
  | SET DEFAULT SQL SECURITY {INVOKER | DEFINER}
  | {ENABLE | DISABLE} PUBLICATION
  | INCLUDE <pub_table_filter> TO PUBLICATION
  | EXCLUDE <pub_table_filter> FROM PUBLICATION

<add_sec_clause> ::= ADD <sec_file> [<sec_file> ...]

<sec_file> ::=
  FILE 'filepath'
  [STARTING [AT [PAGE]] pagenum]
  [LENGTH [=] num [PAGE[S]]

<pub_table_filter> ::=
    ALL
  | TABLE table_name [, table_name ...]
Note

Mehrere Dateien können in einer ADD-Klausel hinzugefügt werden:

ALTER DATABASE
  ADD FILE x LENGTH 8000
    FILE y LENGTH 8000
    FILE z

Mehrfaches Vorkommen von add_sec_clause (ADD FILE-Klauseln) ist erlaubt;eine ADD FILE-Klausel, die mehrere Dateien hinzufügt (wie im obigen Beispiel), kann mit anderen gemischt werden, die nur eine Datei hinzufügen.Die Anweisung wurde in der alten InterBase 6 Language Reference falsch dokumentiert.

Table 1. ALTER DATABASE-Anweisungsparameter
Parameter Beschreibung

add_sec_clause

Hinzufügen einer sekundären Datenbankdatei

sec_file

Dateispezifikation für Sekundärdatei

filepath

Vollständiger Pfad und Dateiname der Deltadatei oder sekundären Datenbankdatei

pagenum

Seitennummer, ab der die sekundäre Datenbankdatei beginnen soll

num

Maximale Größe der Sekundärdatei in Seiten

diff_file

Dateipfad und Name der .delta-Datei (Differenzdatei)

charset

Neuer Standardzeichensatz der Datenbank

linger_duration

Dauer der linger Verzögerung in Sekunden;muss größer oder gleich 0 (null) sein

plugin_name

Der Name des Verschlüsselungs-Plugins

key_name

Der Name des Verschlüsselungsschlüssels

pub_table_filter

Filter of tables to include to or exclude from publication

table_name

Name (identifier) of a table

Die ALTER DATABASE-Anweisung kann:

  • Sekundärdateien zu einer Datenbank hinzufügen

  • Umschalten einer Einzeldatei-Datenbank in den “copy-safe”-Modus (nur DSQL)

  • Pfad und Name der Delta-Datei für physische Backups setzen oder aufheben (nur DSQL)

Note

SCHEMA ist derzeit ein Synonym für DATABASE;dies kann sich in einer zukünftigen Version ändern, daher empfehlen wir immer DATABASE zu verwenden

Wer kann die Datenbank ändern?

Die ALTER DATABASE-Anweisung kann ausgeführt werden durch:

Paramter für ALTER DATABASE

ADD (FILE)

Fügt der Datenbank sekundäre Dateien hinzu.Es ist notwendig, den vollständigen Pfad zur Datei und den Namen der Sekundärdatei anzugeben.Die Beschreibung für die Sekundärdatei ähnelt der für die Anweisung CREATE DATABASE.

ADD DIFFERENCE FILE

Gibt den Pfad und den Namen der Delta-Datei an, die alle Mutationen in der Datenbank speichert, wenn sie in den "kopiersicheren" Modus geschaltet wird.Diese Klausel fügt tatsächlich keine Datei hinzu.Es überschreibt nur den Standardnamen und -pfad der .delta-Datei.Um die bestehenden Einstellungen zu ändern, sollten Sie die zuvor angegebene Beschreibung der .delta-Datei mit der DROP DIFFERENCE FILE-Klausel löschen, bevor Sie die neue Beschreibung der Delta-Datei angeben.Wenn Pfad und Name der .delta-Datei nicht überschrieben werden, hat die Datei denselben Pfad und Namen wie die Datenbank, jedoch mit der Dateierweiterung .delta.

Caution

Wird nur ein Dateiname angegeben, wird die .delta-Datei im aktuellen Verzeichnis des Servers erstellt.Unter Windows ist dies das Systemverzeichnis – ein sehr unkluger Ort, um flüchtige Benutzerdateien zu speichern und im Gegensatz zu den Windows-Dateisystemregeln.

DROP DIFFERENCE FILE

Löscht die Beschreibung (Pfad und Name) der .delta-Datei, die zuvor in der Klausel ADD DIFFERENCE FILE angegeben wurde.Die Datei wird nicht wirklich gelöscht.DROP DIFFERENCE FILE löscht den Pfad und den Namen der .delta-Datei aus dem Datenbank-Header.Wenn die Datenbank das nächste Mal in den “copy-safe”-Modus geschaltet wird, werden die Standardwerte verwendet (d. h. der gleiche Pfad und Name wie die der Datenbank, aber mit der Erweiterung .delta).

BEGIN BACKUP

Schaltet die Datenbank in den “kopiersicher” Modus. ALTER DATABASE mit dieser Klausel friert die Hauptdatenbankdatei ein, sodass sie mit Dateisystemtools sicher gesichert werden kann, selbst wenn Benutzer verbunden sind und Operationen mit Daten ausführen.Bis der Sicherungsstatus der Datenbank auf NORMAL zurückgesetzt wird, werden alle an der Datenbank vorgenommenen Änderungen in die .delta (Differenz)-Datei geschrieben.

Important

Trotz ihrer Syntax startet eine Anweisung mit der BEGIN BACKUP-Klausel keinen Backup-Prozess, sondern schafft lediglich die Bedingungen für die Ausführung einer Aufgabe, die erfordert, dass die Datenbankdatei temporär schreibgeschützt ist.

END BACKUP

Schaltet die Datenbank vom “kopiersicheren” Modus in den normalen Modus um.Eine Anweisung mit dieser Klausel führt die .delta-Datei mit der Hauptdatenbankdatei zusammen und stellt den normalen Betrieb der Datenbank wieder her.Nach dem Start des Prozesses END BACKUP sind die Voraussetzungen für die Erstellung sicherer Backups mittels Dateisystemtools nicht mehr gegeben.

Warning

Die Verwendung von BEGIN BACKUP und END BACKUP und das Kopieren der Datenbankdateien mit Dateisystemtools ist bei Mehrdateidatenbanken nicht sicher!Verwenden Sie diese Methode nur für Datenbanken mit einer einzigen Datei.

Eine sichere Sicherung mit dem Dienstprogramm gbak ist jederzeit möglich, es wird jedoch nicht empfohlen, gbak auszuführen, während sich die Datenbank im Status LOCKED oder MERGE befindet.

SET DEFAULT CHARACTER SET

Ändert den Standardzeichensatz der Datenbank.Diese Änderung wirkt sich nicht auf vorhandene Daten oder Spalten aus.Der neue Standardzeichensatz wird nur in nachfolgenden DDL-Befehlen verwendet.

ENCRYPT WITH

Siehe auch Verschlüsselung einer Datenbank im Sicherheitskapitel.

DECRYPT

Siehe auch Entschlüsselung einer Datenbank im Sicherheitskapitel.

SET LINGER TO

Setzt die linger-Verzögerung.Die linger-Verzögerung gilt nur für Firebird SuperServer und gibt an, wie viele Sekunden der Server eine Datenbankdatei (und ihre Caches) geöffnet hält, nachdem die letzte Verbindung zu dieser Datenbank geschlossen wurde.Dies kann dazu beitragen, die Leistung kostengünstig zu verbessern, wenn die Datenbank häufig geöffnet und geschlossen wird, indem Ressourcen für die nächste Verbindung "warm" gehalten werden.

Note

Dieser Modus kann für Webanwendungen - ohne Verbindungspool - nützlich sein, bei denen die Verbindung zur Datenbank normalerweise nur für sehr kurze Zeit "lebt".

Warning

Die Klauseln SET LINGER TO und DROP LINGER können in einer einzigen Anweisung kombiniert werden, aber die letzte Klausel "gewinnt".Zum Beispiel setzt ALTER DATABASE SET LINGER TO 5 DROP LINGER die linger-Verzögerung auf 0 (kein linger), während ALTER DATABASE DROP LINGER SET LINGER to 5 die linger-Verzögerung auf 5 Sekunden setzt.

DROP LINGER

Löscht die linger-Verzögerung (setzt sie auf Null).Die Verwendung von DROP LINGER entspricht der Verwendung von SET LINGER TO 0.

Note

Das Löschen von 'LINGER' ist keine ideale Lösung für die gelegentliche Notwendigkeit, es für einen einmaligen Zustand auszuschalten, in dem der Server erzwungenes Herunterfahren benötigt.Das Dienstprogramm gfix hat jetzt den Schalter -NoLinger, der die angegebene Datenbank sofort schließt, nachdem der letzte Anhang verschwunden ist, unabhängig von der LINGER-Einstellung in der Datenbank.Die Einstellung 'LINGER' wird beibehalten und funktioniert beim nächsten Mal normal.

Dieselbe einmalige Überschreibung ist auch über die Dienste-API unter Verwendung des Tags isc_spb_prp_nolinger verfügbar, z. (in einer Zeile):

fbsvcmgr host:service_mgr user sysdba password xxx
       action_properties dbname employee prp_nolinger
Warning

Die Klauseln DROP LINGER und SET LINGER TO können in einer einzigen Anweisung kombiniert werden, aber die letzte Klausel "gewinnt".

SET DEFAULT SQL SECURITY

Gibt die Standardoption SQL SECURITY an, die zur Laufzeit für Objekte ohne den Eigenschaftssatz SQL-Sicherheit angewendet wird.Siehe auch SQL-Sicherheit im Kapitel Sicherheit.

ENABLE PUBLICATION

Aktiviert die Veröffentlichung dieser Datenbank für die Replikation.Die Replikation beginnt (oder wird fortgesetzt) mit der nächsten Transaktion, die gestartet wird, nachdem diese Transaktion festgeschrieben wurde.

DISABLE PUBLICATION

Aktiviert die Veröffentlichung dieser Datenbank für die Replikation.Die Replikation wird sofort nach dem Commit deaktiviert.

EXCLUDE …​ FROM PUBLICATION

Schließt Tabellen von der Veröffentlichung aus.Wenn die INCLUDE ALL TO PUBLICATION-Klausel verwendet wird, werden alle danach erstellten Tabellen ebenfalls repliziert, sofern sie nicht explizit in der CREATE TABLE-Anweisung überschrieben werden.

INCLUDE …​ TO PUBLICATION

Enthält Tabellen zur Veröffentlichung.Wenn die INCLUDE ALL TO PUBLICATION-Klausel verwendet wird, werden alle danach erstellten Tabellen ebenfalls repliziert, sofern sie nicht explizit in der CREATE TABLE-Anweisung überschrieben werden.

Note
Replikation
  • Abgesehen von der Syntax wird die Konfiguration von Firebird für die Replikation in dieser Sprachreferenz nicht behandelt.

  • Alle Replikationsverwaltungsbefehle sind DDL-Anweisungen und werden daher zur Transaktions-Commit-Zeit effektiv ausgeführt.

Beispiele zur Verwendung von ALTER DATABASE

  1. Hinzufügen einer sekundären Datei zur Datenbank.Sobald 30000 Seiten in der vorherigen Primär- oder Sekundärdatei gefüllt sind, beginnt die Firebird-Engine, Daten in die Sekundärdatei test4.fdb hinzuzufügen.

    ALTER DATABASE
      ADD FILE 'D:\test4.fdb'
        STARTING AT PAGE 30001;
  2. Angabe von Pfad und Name der Delta-Datei:

    ALTER DATABASE
      ADD DIFFERENCE FILE 'D:\test.diff';
  3. Löschen der Beschreibung der Delta-Datei:

    ALTER DATABASE
      DROP DIFFERENCE FILE;
  4. Umschalten der Datenbank in den “kopiersicher” Modus:

    ALTER DATABASE
      BEGIN BACKUP;
  5. Zurückschalten der Datenbank vom “copy-safe”-Modus in den normalen Betriebsmodus:

    ALTER DATABASE
      END BACKUP;
  6. Ändern des Standardzeichensatzes für eine Datenbank in WIN1251

    ALTER DATABASE
      SET DEFAULT CHARACTER SET WIN1252;
  7. Einstellen einer linger-Verzögerung von 30 Sekunden

    ALTER DATABASE
      SET LINGER TO 30;
  8. Verschlüsseln der Datenbank mit einem Plugin namens DbCrypt

    ALTER DATABASE
      ENCRYPT WITH DbCrypt;
  9. Entschlüsseln der Datenbank

    ALTER DATABASE
      DECRYPT;

DROP DATABASE

Verwendet für

Löschen der Datenbank, mit der Sie gerade verbunden sind

Verfügbar in

DSQL, ESQL

Syntax
DROP DATABASE

Die Anweisung DROP DATABASE löscht die aktuelle Datenbank.Bevor Sie eine Datenbank löschen, müssen Sie sich mit ihr verbinden.Die Anweisung löscht die Primärdatei, alle Sekundärdateien und alle Shadow-Dateien.

Note

Im Gegensatz zu CREATE DATABASE und ALTER DATABASE ist DROP SCHEMA kein gültiger Alias für DROP DATABASE.Dies ist beabsichtigt.

Wer kann eine Datenbank löschen?

Die DROP DATABASE-Anweisung kann ausgeführt werden durch:

Beispiel zur Verwendung von DROP DATABASE

Löschen der aktuellen Datenbank
DROP DATABASE;