CREATE DATABASE

Erstellt eine neue Datenbank im System.

Darüber hinaus unterstützt dieser Befehl die folgenden Varianten:

  • CREATE OR ALTER DATABASE: Erstellt eine Datenbank, wenn sie nicht existiert, oder ändert eine bestehende Datenbank.

  • CREATE DATABASE … CLONE: Erstellt einen Klon einer vorhandenen Datenbank, entweder in ihrem aktuellen Status oder zu einem bestimmten Zeitpunkt/Punkt in der Vergangenheit (mit Time Travel). Weitere Informationen zum Klonen einer Datenbank finden Sie unter Hinweise zum Klonen.

Darüber hinaus kann dieser Befehl für folgende Aufgaben verwendet werden:

Tipp

Neben SQL können Sie auch andere Weboberflächen verwenden, wie Snowflake REST APIs, Snowflake Python APIs und Snowflake CLI. Siehe Alternative Weboberflächen.

Siehe auch:

ALTER DATABASE, DESCRIBE DATABASE, DROP DATABASE, SHOW DATABASES, UNDROP DATABASE

DESCRIBE SHARE , SHOW SHARES, CREATE LISTING, CREATE OR ALTER <objekt>

Syntax

Standarddatenbank

CREATE [ OR REPLACE ] [ TRANSIENT ] DATABASE [ IF NOT EXISTS ] <name>
    [ CLONE <source_schema>
        [ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ]
        [ IGNORE TABLES WITH INSUFFICIENT DATA RETENTION ]
        [ IGNORE HYBRID TABLES ] ]
    [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
    [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
    [ EXTERNAL_VOLUME = <external_volume_name> ]
    [ CATALOG = <catalog_integration_name> ]
    [ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
    [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
    [ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
    [ COMMENT = '<string_literal>' ]
    [ CATALOG_SYNC = '<snowflake_open_catalog_integration_name>' ]
    [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Copy

Standard Datenbank (aus einem Freigabeangebot)

CREATE DATABASE <name> FROM LISTING '<listing_global_name>'
Copy

Freigegebene Datenbank (aus einer Freigabe)

CREATE DATABASE <name> FROM SHARE <provider_account>.<share_name>
Copy

Sekundäre Datenbank (Datenbankreplikation)

CREATE DATABASE <name>
    AS REPLICA OF <account_identifier>.<primary_db_name>
    [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
Copy

Syntaxvariante

CREATE OR ALTER DATABASE

Erstellt eine neue Datenbank, wenn sie noch nicht existiert, oder wandelt eine vorhandene Datenbank in die in der Anweisung definierte Datenbank um. Eine CREATE OR ALTER DATABASE-Anweisung folgt den Syntaxregeln einer CREATE DATABASE-Anweisung und hat die gleichen Einschränkungen wie eine ALTER DATABASE-Anweisung.

Die folgenden Änderungen werden unterstützt:

Weitere Informationen dazu finden Sie unter Nutzungshinweise zu CREATE OR ALTER DATABASE.

CREATE OR ALTER [ TRANSIENT ] DATABASE <name>
    [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
    [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
    [ EXTERNAL_VOLUME = <external_volume_name> ]
    [ CATALOG = <catalog_integration_name> ]
    [ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
    [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
    [ LOG_LEVEL = '<log_level>' ]
    [ TRACE_LEVEL = '<trace_level>' ]
    [ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
    [ COMMENT = '<string_literal>' ]
Copy

CREATE DATABASE … CLONE

Erzeugt eine neue Datenbank mit denselben Parameterwerten:

CREATE [ OR REPLACE ] DATABASE [ IF NOT EXISTS ] <name> CLONE <source_database>
  [ ... ]
Copy

Weitere Details dazu finden Sie unter CREATE <Objekt> … CLONE.

Erforderliche Parameter

name

Gibt den Bezeichner für die Datenbank an. Dieser muss für Ihr Konto eindeutig sein.

Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B. "My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.

Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.

Wichtig

Als bewährte Methode für Datenbankreplikation und Failover empfehlen wir, jeder sekundären Datenbank denselben Namen wie ihrer primären Datenbank zu geben. Diese Vorgehensweise unterstützt das Verweisen auf vollständig qualifizierte Objekte (d. h. '<Datenbank>.<Schema>.<Objekt>') durch andere Objekte in derselben Datenbank, z. B. das Abfragen eines vollständig qualifizierten Tabellennamens in einer Ansicht.

Wenn eine sekundäre Datenbank einen anderen Namen als die primäre Datenbank hat, werden diese Objektreferenzen in der sekundären Datenbank unterbrochen.

Parameter für Secure Data Sharing

provider_account.share_name

Gibt den Bezeichner der Freigabe an, aus der die Datenbank erstellt werden soll. Wie dokumentiert, muss der Name der Freigabe mit dem Namen des Kontos, das die Freigabe bereitstellt, vollqualifiziert sein.

Parameter für Datenbankreplikationen

Wichtig

In diesem Abschnitt wird ein beschränktes Feature zur Datenbankreplikation beschrieben, das sich vom Feature Kontoreplikation unterscheidet. Snowflake empfiehlt dringend die Verwendung des Features Kontoreplikation für die Replikation und das Failover von Datenbanken.

AS REPLICA OF account_identifier.primary_db_name

Gibt den Bezeichner für eine Primärdatenbank an, von der ein Replikat (d. h. eine Sekundärdatenbank) erstellt werden soll. Wenn der Bezeichner Leerzeichen, Sonderzeichen oder Zeichen in Groß-/Kleinschreibung enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen eingeschlossen werden.

Erfordert den Kontobezeichner und den Namen der Primärdatenbank.

account_identifier

Eindeutiger Bezeichner des Kontos, in dem die Primärdatenbank gespeichert ist. Der bevorzugte Bezeichner hat das Format organization_name.account_name. Fragen Sie SHOW REPLICATION ACCOUNTS ab, um die Liste der Konten in Ihrer Organisation anzuzeigen.

Obwohl der alte Konto-Locator auch als Kontobezeichner verwendet werden kann, wird davon abgeraten, da dies in Zukunft möglicherweise nicht mehr funktioniert. Weitere Informationen zur Verwendung des Konto-Locators als Kontobezeichner finden Sie unter Nutzungshinweise zur Datenbankreplikation.

primary_db_name

Name der primären Datenbank. Als bewährte Methode empfehlen wir, jeder sekundären Datenbank denselben Namen wie ihrer primären Datenbank zu geben.

Bemerkung

Als bewährte Methode für Datenbankreplikation und Failover wird empfohlen, den optionalen Parameter DATA_RETENTION_TIME_IN_DAYS der sekundären Datenbank auf denselben Wert wie auf der primären Datenbank zu setzen.

Parameter für das Freigabeangebot

'listing_global_name'

Gibt den globalen Namen des Freigabeangebots an, aus dem die Datenbank erstellt werden soll. Das Freigabeangebot muss die folgenden Anforderungen erfüllen:

  • Es darf sich nicht um eine monetarisiertes Freigabeangebot handeln.

  • Bedingungen für Freigabeangebote, die nicht vom Typ OFFLINE sind, müssen über die Snowsight akzeptiert worden sein.

  • Die Datenprodukte des Freigabeangebots müssen in der aktuellen Region verfügbar sein.

    Ob ein Freigabeangebot in der lokalen Region verfügbar ist, können Sie in der Spalte is_ready_for_import von DESCRIBE AVAILABLE LISTING sehen.

Sie müssen über die Berechtigung IMPORT LISTING verfügen, um eine Datenbank aus einem Freigabeangebot zu erstellen. Sie müssen über die Berechtigung IMPORT SHARE verfügen, um eine Datenbank aus einer Freigabe zu erstellen.

Optionale Parameter

TRANSIENT

Gibt eine Datenbank als transient an. Transiente Datenbanken haben keine Fail-safe-Frist, sodass ihnen nach Verlassen von Time Travel keine zusätzlichen Speicherkosten entstehen; das bedeutet aber auch, dass sie bei einem Datenverlust nicht durch Fail-safe geschützt sind. Weitere Informationen dazu finden Sie unter Erläuterungen zu und Anzeigen von Fail-safe.

Darüber hinaus sind per Definition alle Schemas (und damit alle Tabellen), die in einer transienten Datenbank erstellt werden, transient. Weitere Informationen zu transienten Tabellen finden Sie unter CREATE TABLE.

Standard: Kein Wert (d. h. die Datenbank ist permanent)

CLONE source_db

Gibt an, dass ein Klon der angegebenen Quelldatenbank erstellt wird. Weitere Informationen zum Klonen einer Datenbank finden Sie unter CREATE <Objekt> … CLONE.

AT | BEFORE ( TIMESTAMP => timestamp | OFFSET => time_difference | STATEMENT => id )

Beim Klonen einer Datenbank gibt die AT | BEFORE-Klausel an, dass Time Travel verwendet wird, um die Datenbank an oder vor einem bestimmten Zeitpunkt der Vergangenheit zu klonen. Wenn die angegebene Time Travel-Zeit zu oder vor dem Zeitpunkt liegt, an dem das Objekt erstellt wurde, schlägt die Klonoperation mit einem Fehler fehl.

IGNORE TABLES WITH INSUFFICIENT DATA RETENTION

Ignorieren Sie Tabellen, für die in Time Travel keine historischen Daten mehr zum Klonen verfügbar sind. Wenn der in der AT|BEFORE-Klausel angegebene Zeitpunkt in der Vergangenheit für eine beliebige untergeordnete Tabelle in einer Datenbank oder einem Schema außerhalb der Datenaufbewahrungsfrist liegt, wird die Klonoperation für die untergeordnete Tabelle übersprungen. Weitere Informationen dazu finden Sie unter Untergeordnete Objekte und Datenaufbewahrungsdauer.

IGNORE HYBRID TABLES

Ignorieren Sie Hybridtabellen, die nicht geklont werden. Verwenden Sie diese Option, um eine Datenbank zu klonen, die Hybridtabellen enthält. Die geklonte Datenbank enthält andere Objekte, überspringt aber Hybridtabellen.

Wenn Sie diese Option nicht verwenden und Ihre Datenbank eine oder mehrere Hybridtabellen enthält, ignoriert der Befehl die Hybridtabellen stillschweigend. Die Fehlerbehandlung für Datenbanken, die Hybridtabellen enthalten, wird sich jedoch in einem kommenden Release ändern. Daher sollten Sie diesen Parameter vorsorglich zu Ihren Befehlen hinzufügen.

DATA_RETENTION_TIME_IN_DAYS = integer

Gibt die Anzahl der Tage an, für die Time Travel-Aktionen (CLONE und UNDROP) auf der Datenbank durchgeführt werden können, sowie die standardmäßige Time Travel-Aufbewahrungsdauer für alle in der Datenbank erstellten Schemas. Weitere Details dazu finden Sie unter Verstehen und Verwenden von Time Travel.

Eine ausführliche Beschreibung dieses Parameters auf Objektebene sowie weitere Informationen zu Objektparametern finden Sie unter Parameter.

Werte:

  • Standardausführung: 0 oder 1

  • Enterprise Edition:

    • 0 bis 90 für permanente Datenbanken

    • 0 oder 1 für transiente Datenbanken

Standard:

  • Standardausführung: 1

  • Enterprise Edition (oder höher): 1 (es sei denn, auf Kontoebene wurde ein anderer Standardwert angegeben)

Bemerkung

Mit dem Wert 0 wird Time Travel für die Datenbank deaktiviert.

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer

Objektparameter, der die maximale Anzahl von Tagen angibt, für die Snowflake die Datenaufbewahrungsfrist für Tabellen in der Datenbank verlängern kann, um zu verhindern, dass Streams auf den Tabellen veraltet sind.

Eine detaillierte Beschreibung dieses Parameters finden Sie unter MAX_DATA_EXTENSION_TIME_IN_DAYS.

EXTERNAL_VOLUME = external_volume_name

Objektparameter, der das standardmäßig zu verwendende externe Volume für Apache Iceberg™-Tabellen angibt.

Weitere Informationen zu diesem Parameter finden Sie unter EXTERNAL_VOLUME.

CATALOG = catalog_integration_name

Objektparameter, der die standardmäßige Katalogintegration angibt, die für Apache Iceberg™-Tabellen verwendet werden soll.

Weitere Informationen zu diesem Parameter finden Sie unter CATALOG.

REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }

Gibt an, ob in Abfrageergebnissen einer Iceberg-Tabelle ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen (�) ersetzt werden sollen. Sie können diesen Parameter nur für Tabellen festlegen, die einen externen Iceberg-Katalog verwenden.

  • TRUE: Snowflake ersetzt ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen.

  • FALSE lässt ungültige UTF-8-Zeichen unverändert. Snowflake gibt eine Fehlermeldung an den Benutzer zurück, wenn es auf ein ungültiges UTF-8-Zeichen in einer Parquet-Datendatei stößt.

Standard: FALSE

DEFAULT_DDL_COLLATION = 'collation_specification'

Gibt eine Standardsortierungsspezifikation für alle zur Datenbank hinzugefügten Schemas und Tabellen an. Der Standardwert kann auf der Ebene des Schemas und der einzelnen Tabelle überschrieben werden.

Weitere Informationen zu diesem Parameter finden Sie unter DEFAULT_DDL_COLLATION.

LOG_LEVEL = 'log_level'

Gibt den Schweregrad von Meldungen an, die in die aktive Ereignistabelle erfasst und zur Verfügung gestellt werden sollen. Meldungen des angegebenen Schweregrads (und mit höherem Schweregrad) werden erfasst.

Weitere Informationen zu Protokolliergraden finden Sie unter LOG_LEVEL. Informationen zum Einstellen des Protokolliergrads finden Sie unter Einstellung der Grade für Protokollierung, Metriken und Ablaufverfolgung.

TRACE_LEVEL = 'trace_level'

Steuert, wie Ablaufverfolgungsereignisse in die Ereignistabelle aufgenommen werden.

Weitere Informationen zu Protokolliergraden finden Sie unter TRACE_LEVEL. Weitere Informationen zum Festlegen der Ablaufverfolgungsebene finden Sie unter Einstellung der Grade für Protokollierung, Metriken und Ablaufverfolgung.

STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED }

Gibt die Speicherserialisierungsrichtlinie für Apache Iceberg™-Tabellen an, die Snowflake als Katalog verwenden.

  • COMPATIBLE: Snowflake führt die Codierung und Komprimierung von Datendateien aus und stellt so die Interoperabilität mit Computing-Engines von Drittanbietern sicher.

  • OPTIMIZED: Snowflake führt die Codierung und Komprimierung von Datendateien aus, um eine optimale Tabellenperformance in Snowflake sicherzustellen.

Standard: OPTIMIZED

COMMENT = 'string_literal'

Gibt einen Kommentar für die Datenbank an.

Standard: Kein Wert

CATALOG_SYNC = 'snowflake_open_catalog_integration_name'

Gibt den Namen einer für Snowflake Open Catalog konfigurierten Katalogintegration an. Falls spezifiziert, synchronisiert Snowflake die von Snowflake verwalteten Apache Iceberg™-Tabellen in der Datenbank mit einem externen Katalog in Ihrem Snowflake Open Catalog-Konto. Weitere Informationen zur Synchronisierung von Snowflake-verwalteten Iceberg-Tabellen mit Open Catalog finden Sie unter Eine Snowflake-verwaltete Tabelle mit Snowflake Open Catalog synchronisieren.

Weitere Informationen zu diesem Parameter finden Sie unter CATALOG_SYNC.

Standard: Kein Wert

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.

Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.

Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingente für Objekte und Spalten.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

CREATE DATABASE

Konto

Erforderlich, um eine neue Datenbank zu erstellen.

Only the SYSADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed.

USAGE

Externes Volume, Katalogintegration

Erforderlich beim Festlegen der Objektparameter EXTERNAL_VOLUME bzw. CATALOG.

IMPORT LISTING

Konto

Erforderlich zur Erstellung einer Datenbank aus einem Freigabeangebot zu erstellen.

IMPORT SHARE

Konto

Erforderlich, um eine Datenbank aus einer Freigabe zu erstellen.

MODIFY LOG LEVEL

Konto

Erforderlich, um die LOG_LEVEL für eine Datenbank einzustellen.

MODIFY TRACE LEVEL

Konto

Erforderlich, um die TRACE_LEVEL für eine Datenbank einzustellen.

OWNERSHIP

Datenbank

Nur erforderlich, wenn Sie eine CREATE OR ALTER DATABASE-Anweisung für eine bestehende Datenbank ausführen.

OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege).

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einem bestimmten Satz von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Allgemeine Nutzungshinweise

  • Das Erstellen einer Datenbank setzt die Datenbank automatisch als aktiv/aktuell für die aktuelle Sitzung (entspricht der Verwendung des Befehls USE DATABASE für die Datenbank).

  • Wenn bereits eine Datenbank mit dem gleichen Namen vorhanden ist, wird ein Fehler zurückgegeben, und die Datenbank wird nicht erstellt, es sei denn, im Befehl ist das optionale Schlüsselwort OR REPLACE angegeben.

    Wichtig

    Die Verwendung von OR REPLACE entspricht der Verwendung von DROP DATABASE für die vorhandene Datenbank und dem Erstellen einer neuen Datenbank mit dem gleichen Namen. Die entfernte Datenbank wird jedoch nicht dauerhaft aus dem System gelöscht. Stattdessen wird sie in Time Travel aufbewahrt. Dies ist wichtig, da in Time Travel gelöschte Datenbanken den Datenspeicher für Ihr Konto beeinflussen. Weitere Informationen dazu finden Sie unter Speicherkosten für Time Travel und Fail-safe.

  • CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.

  • Beim Erstellen einer neuen Datenbank werden automatisch zwei Schemas in der Datenbank erstellt:

    • PUBLIC: Standardschema für die Datenbank.

    • INFORMATION_SCHEMA: Schema, das Ansichten und Tabellenfunktionen enthält, die für die Abfrage von Metadaten über die Objekte in der Datenbank sowie über alle Objekte im Konto verwendet werden kann.

  • Datenbanken, die aus Freigaben erstellt werden, unterscheiden sich von Standarddatenbanken durch folgende Punkte:

    • Sie haben nicht die PUBLIC- oder INFORMATION_SCHEMA-Schemas, es sei denn, diese Schemas wurden der Freigabe ausdrücklich gewährt.

    • Sie können nicht geklont werden.

    • Eigenschaften wie TRANSIENT und DATA_RETENTION_TIME_IN_DAYS gelten nicht.

  • Wenn eine Datenbank aktiv/aktuell ist, ist das PUBLIC-Schema standardmäßig ebenfalls aktiv/aktuell, es sei denn, es wird ein anderes Schema verwendet oder das PUBLIC-Schema wurde gelöscht.

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

Nutzungshinweise zu CREATE OR ALTER DATABASE

  • Es gelten alle Einschränkungen des Befehls ALTER DATABASE.

  • Dieser Befehl unterstützt die Eigenschaften und die Syntax, die sich mit den Befehlen CREATE DATABASE und ALTER DATABASE überschneiden. Aus diesem Grund werden die folgenden nicht unterstützt:

    • Austauschen von Datenbanken mit dem Parameter SWAP WITH.

    • Umbenennen einer Datenbank mit dem Parameter RENAME TO.

    • Erstellen eines Klons einer Datenbank mit dem Parameter CLONE.

    • Hinzufügen oder Ändern von Tags und Richtlinien. Alle vorhandenen Tags und Richtlinien bleiben erhalten.

    • Konvertieren einer TRANSIENT Datenbank in eine nichtTRANSIENT Datenbank oder umgekehrt.

    • Erstellen einer Datenbank aus einer Freigabe mit CREATE OR ALTER DATABASE … FROM SHARE.

    • Erstellen einer sekundären Datenbank (Replikat) mit CREATE OR ALTER DATABASE … AS REPLICA OF.

Nutzungshinweise zur Datenbankreplikation

Wichtig

In diesem Abschnitt wird ein beschränktes Feature zur Datenbankreplikation beschrieben, das sich vom Feature Kontoreplikation unterscheidet. Snowflake empfiehlt dringend die Verwendung des Features Kontoreplikation für die Replikation und das Failover von Datenbanken.

  • Bei der Datenbankreplikation werden zum Kopieren von Objekten und Daten die von Snowflake bereitgestellten Computeressourcen anstelle Ihres eigenen virtuellen Warehouse verwendet. Der Sitzungs-/Objektparameter STATEMENT_TIMEOUT_IN_SECONDS steuert jedoch weiterhin, wie lange eine Anweisung ausgeführt wird, bevor sie abgebrochen wird. Der Standardwert ist 172800 (2 Tage). Da die erstmalige Replikation einer Primärdatenbank länger als 2 Tage dauern kann (abhängig von der Menge der Metadaten in der Datenbank sowie der Menge der Daten in den Datenbankobjekten), empfehlen wir, den Wert STATEMENT_TIMEOUT_IN_SECONDS für die Sitzung, in der Sie den Replikationsoperation ausführen, auf 604800 (7 Tage, Maximalwert) zu erhöhen.

    Führen Sie die folgende ALTER SESSION-Anweisung aus, bevor Sie in derselben Sitzung die Anweisung ALTER DATABASE secondary_db_name REFRESH (Name_der_Sekundärdatenbank) ausführen:

    ALTER SESSION SET STATEMENT_TIMEOUT_IN_SECONDS = 604800;
    
    Copy

    Beachten Sie, dass der Parameter STATEMENT_TIMEOUT_IN_SECONDS auch für das aktive Warehouse einer Sitzung gilt. Der Parameter berücksichtigt den niedrigeren Wert, der auf Sitzungs- oder Warehouse-Ebene festgelegt wurde. Wenn Sie in der aktuellen Sitzung ein aktives Warehouse haben, setzen Sie STATEMENT_TIMEOUT_IN_SECONDS auch für dieses Warehouse auf 604800 (mithilfe von ALTER WAREHOUSE).

    Beispiel:

    -- determine the active warehouse in the current session (if any)
    SELECT CURRENT_WAREHOUSE();
    
    +---------------------+
    | CURRENT_WAREHOUSE() |
    |---------------------|
    | MY_WH               |
    +---------------------+
    
    -- change the STATEMENT_TIMEOUT_IN_SECONDS value for the active warehouse
    
    ALTER WAREHOUSE my_wh SET STATEMENT_TIMEOUT_IN_SECONDS = 604800;
    
    Copy

    Sie können den Parameterwert nach Abschluss der Replikationsoperation auf den Standardwert zurücksetzen:

    ALTER WAREHOUSE my_wh UNSET STATEMENT_TIMEOUT_IN_SECONDS;
    
    Copy
  • Bei der bevorzugten Methode zum Identifizieren des Kontos, das die Primärdatenbank speichert, werden der Name der Organisation und der Kontoname als Kontobezeichner verwendet. Wenn Sie stattdessen den alten Konto-Locator verwenden möchten, finden Sie entsprechende Informationen unter Kontobezeichner für Replikation und Failover.

  • Der Befehl CREATE DATABASE … AS REPLICA bietet keine Unterstützung für die WITH TAG-Klausel.

    Diese Klausel wird nicht unterstützt, da die Sekundärdatenbank schreibgeschützt ist. Wenn Ihre Primärdatenbank die WITH TAG-Klausel enthält, entfernen Sie die Klausel, bevor Sie die Sekundärdatenbank erstellen. Um zu überprüfen, ob Ihre Datenbank über die WITH TAG-Klausel verfügt, rufen Sie in Ihrem Snowflake-Konto die Funktion GET_DDL auf und geben die Primärdatenbank im Funktionsargument an. Wenn ein Tag auf der Datenbank gesetzt ist, enthält die Funktionsausgabe eine ALTER DATABASE … SET TAG-Anweisung.

    Weitere Informationen dazu finden Sie unter Replikation und Tags.

Beispiele

Erstellen Sie zwei permanente Datenbanken, eine mit einer Datenaufbewahrungsfrist von 10 Tagen:

CREATE DATABASE mytestdb;

CREATE DATABASE mytestdb2 DATA_RETENTION_TIME_IN_DAYS = 10;

SHOW DATABASES LIKE 'my%';

+---------------------------------+------------+------------+------------+--------+----------+---------+---------+----------------+
| created_on                      | name       | is_default | is_current | origin | owner    | comment | options | retention_time |
|---------------------------------+------------+------------+------------+--------+----------+---------+---------+----------------|
| Tue, 17 Mar 2016 16:57:04 -0700 | MYTESTDB   | N          | N          |        | PUBLIC   |         |         | 1              |
| Tue, 17 Mar 2016 17:06:32 -0700 | MYTESTDB2  | N          | N          |        | PUBLIC   |         |         | 10             |
+---------------------------------+------------+------------+------------+--------+----------+---------+---------+----------------+
Copy

Erstellen Sie eine transiente Datenbank:

CREATE TRANSIENT DATABASE mytransientdb;

SHOW DATABASES LIKE 'my%';

+---------------------------------+---------------+------------+------------+--------+----------+---------+-----------+----------------+
| created_on                      | name          | is_default | is_current | origin | owner    | comment | options   | retention_time |
|---------------------------------+---------------+------------+------------+--------+----------+---------+-----------+----------------|
| Tue, 17 Mar 2016 16:57:04 -0700 | MYTESTDB      | N          | N          |        | PUBLIC   |         |           | 1              |
| Tue, 17 Mar 2016 17:06:32 -0700 | MYTESTDB2     | N          | N          |        | PUBLIC   |         |           | 10             |
| Tue, 17 Mar 2015 17:07:51 -0700 | MYTRANSIENTDB | N          | N          |        | PUBLIC   |         | TRANSIENT | 1              |
+---------------------------------+---------------+------------+------------+--------+----------+---------+-----------+----------------+
Copy

Erstellen Sie eine Datenbank aus einer Freigabe, die vom Konto ab67890 bereitgestellt wird:

CREATE DATABASE snow_sales FROM SHARE ab67890.sales_s;
Copy

Ausführlichere Beispiele zum Erstellen einer Datenbank aus einer Freigabe finden Sie unter Importierte Daten verbrauchen.

Beispiele für die Datenbankreplikation

Wichtig

In diesem Abschnitt wird ein beschränktes Feature zur Datenbankreplikation beschrieben, das sich vom Feature Kontoreplikation unterscheidet. Snowflake empfiehlt dringend die Verwendung des Features Kontoreplikation für die Replikation und das Failover von Datenbanken.

Ein Beispiel für das Erstellen einer Replikationsgruppe, um eine einzelne Datenbank in ein Zielkonto zu replizieren, finden Sie unter Einzelne Datenbank replizieren.

Beispiele zu CREATE OR ALTER DATABASE

Eine einfache Datenbank erstellen

Erstellen Sie eine Datenbank mit dem Namen db1:

CREATE OR ALTER DATABASE db1;
Copy

Ändern Sie die Datenbank db1, um die Parameter DATA_RETENTION_TIME_IN_DAYS und DEFAULT_DDL_COLLATION einzustellen:

CREATE OR ALTER DATABASE db1
  DATA_RETENTION_TIME_IN_DAYS = 5
  DEFAULT_DDL_COLLATION = 'de';
Copy

Einen zuvor in der Datenbank eingestellten Parameter zurücksetzen

Das Fehlen eines zuvor gesetzten Parameters in der geänderten Datenbankdefinition führt dazu, dass er nicht mehr gesetzt ist. Im folgenden Beispiel deaktivieren Sie den Parameter DATA_RETENTION_TIME_IN_DAYS für die im vorherigen Beispiel erstellte Datenbank db1:

CREATE OR ALTER DATABASE db1
  DEFAULT_DDL_COLLATION = 'de';
Copy

Alternative Weboberflächen