Kategorien:

DDL für Datenbanken, Schemas und Freigaben

ALTER DATABASE

Ändert die Eigenschaften für eine bestehende Datenbank, einschließlich:

  • Ändern des Namens der Datenbank oder Ändern der Datenaufbewahrungsfrist für Time Travel (wenn Sie Snowflake Enterprise Edition oder höher verwenden).

  • Aktivieren und Verwalten der Datenbankreplikation und des Failovers.

Siehe auch:

CREATE DATABASE, SHOW DATABASES

Unter diesem Thema:

Syntax

ALTER DATABASE [ IF EXISTS ] <name> RENAME TO <new_db_name>

ALTER DATABASE [ IF EXISTS ] <name> SWAP WITH <target_db_name>

ALTER DATABASE [ IF EXISTS ] <name> SET [ DATA_RETENTION_TIME_IN_DAYS = <num> ]
                                        [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                        [ COMMENT = '<string_literal>' ]

ALTER DATABASE [ IF EXISTS ] <name> UNSET { DATA_RETENTION_TIME_IN_DAYS |
                                            DEFAULT_DDL_COLLATION       |
                                            COMMENT }
                                          [ , ... ]

Syntax für Datenbankreplikation und Failover

Datenbankreplikation

ALTER DATABASE <name> ENABLE REPLICATION TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ] [ IGNORE EDITION CHECK ]

ALTER DATABASE <name> DISABLE REPLICATION [ TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ] ]

ALTER DATABASE <name> SET AUTO_REFRESH_MATERIALIZED_VIEWS_ON_SECONDARY = { TRUE | FALSE }

ALTER DATABASE <name> REFRESH

Datenbank-Failover

ALTER DATABASE <name> ENABLE FAILOVER TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ]

ALTER DATABASE <name> DISABLE FAILOVER [ TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ] ]

ALTER DATABASE <name> PRIMARY

Parameter

Name

Gibt den Bezeichner für die zu ändernde Datenbank an. Wenn der Bezeichner Leerzeichen, Sonderzeichen oder gemischte Zeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen eingeschlossen werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß- und Kleinschreibung zu beachten.

RENAME TO Name_der_neuen_DB

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

Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.

Wenn ein Objekt umbenannt wird, müssen andere Objekte, die darauf verweisen, mit dem neuen Namen aktualisiert werden.

SWAP WITH Name_der_Ziel-DB

Tauscht alle Objekte (Schemata, Tabellen, Ansichten usw.) und Metadaten, einschließlich Bezeichner, zwischen den beiden angegebenen Datenbanken aus. Tauscht auch alle Zugriffssteuerungsrechte aus, die für die Datenbanken und Objekte, die sie enthalten, vergeben wurden. SWAP WITH führt im Wesentlichen eine Umbenennung beider Datenbanken als eine einzige Operation aus.

SET ...

Gibt eine (oder mehrere) Eigenschaften an, die für die Datenbank festgelegt werden sollen (getrennt durch Leerzeichen, Kommas oder neue Zeilen):

DATA_RETENTION_TIME_IN_DAYS = Zahl

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 Schemata.

Der Wert, den Sie angeben können, hängt von der verwendeten Snowflake-Edition ab:

  • Standardausführung: 0 oder 1

  • Enterprise Edition (oder höher): 0 bis 90

DEFAULT_DDL_COLLATION = 'Sortierungsspezifikation'

Gibt eine standardmäßige Sortierungsspezifikation für Folgendes an:

  • Alle neuen Spalten, die zu vorhandenen Tabellen in der Datenbank hinzugefügt wurden.

  • Alle Spalten in neuen Tabellen, die der Datenbank hinzugefügt wurden.

Durch das Festlegen des Parameters ändert sich nicht die Sortierungsspezifikation für vorhandene Spalten.

Weitere Informationen zu diesem Parameter finden Sie unter DEFAULT_DDL_COLLATION.

COMMENT = 'Zeichenfolgenliteral'

Fügt einen Kommentar hinzu oder überschreibt einen bestehenden Kommentar für die Datenbank.

UNSET ...

Gibt eine (oder mehrere) Eigenschaften und/oder Parameter an, die für die Datenbank gelöscht werden sollen, wodurch sie auf die Standardwerte zurückgesetzt werden:

  • DATA_RETENTION_TIME_IN_DAYS

  • DEFAULT_DDL_COLLATION

  • COMMENT

Sie können mehrere Eigenschaften/Parameter mit einer einzigen ALTER-Anweisung zurücksetzen; jedoch müssen einzelne Eigenschaften/Parameter durch ein Komma getrennt werden. Wenn Sie eine Eigenschaft/einen Parameter zurücksetzen, geben Sie nur den Namen an. Die Angabe eines Wertes für die Eigenschaft gibt einen Fehler zurück.

Datenbankreplikation und Failover-Parameter

ENABLE REPLICATION TO ACCOUNTS Snowflake-Region.Kontoname [ , Snowflake-Region.Kontoname ... ]

Heraufstufen einer lokalen Datenbank als primäre Datenbank für die Replikation. Eine Primärdatenbank kann in einem oder mehreren Konten repliziert werden, sodass Benutzer in diesen Konten Objekte in jeder sekundären (d. h. Replikat-) Datenbank abfragen können.

Ändern Sie alternativ eine vorhandene Primärdatenbank, um der Liste der Konten, in denen ein Replikat der Datenbank gespeichert werden kann, hinzuzufügen oder daraus zu entfernen.

Stellen Sie eine durch Kommas getrennte Liste von Konten in Ihrer Organisation bereit, in der ein Replikat dieser Datenbank gespeichert werden kann. Zusätzlich zum Kontonamen sind abhängig von der Region, in der sich Ihr Remotekonto befindet, zusätzliche Segmente erforderlich:

Kontoreferenz

Qualifizierter Kontoname

Speicherort des Remote-Kontos

Konto

Dieselbe Region, aber ein anderes Konto als das Konto, in dem die Primärdatenbank gespeichert ist.

Snowflake-Region.Konto

Dieselbe Regionsgruppe, aber eine andere Region als das Konto, in dem die Primärdatenbank gespeichert ist.

Snowflake-Region

Geben Sie die Snowflake-Regions-ID für Ihre Region an, in der die einzelnen Snowflake-Konten gehostet werden. Wie Sie die Liste der Konten in Ihrer Organisation anzeigen können, ist unter SHOW REPLICATION ACCOUNTS beschrieben.

IGNORE EDITION CHECK

Ermöglicht das Replizieren von Daten auf Konten in niedrigeren Editionen in einem der folgenden Szenarien:

  • Die Primärdatenbank befindet sich in einem Business Critical-Konto (oder höher), aber eines oder mehrere der zur Replikation genehmigten Konten befinden sich in niedrigeren Editionen. Die Business Critical-Edition ist für Snowflake-Konten mit äußerst sensiblen Daten vorgesehen.

  • Die Primärdatenbank befindet sich in einem Business Critical-Konto (oder höher), und es ist eine unterzeichnete Geschäftspartner-Vereinbarung vorhanden, um PHI-Daten gemäß den HIPAA-Vorschriften in dem Konto zu speichern, jedoch gibt es für die zur Replikation genehmigte Konten keine solche Vereinbarung, unabhängig davon, ob es sich um Business Critical-Konten (oder höhere) handelt.

Beide Szenarien sind standardmäßig verboten, um zu verhindern, dass Kontoadministratoren von Business Critical-Konten (oder höher) versehentlich vertrauliche Daten auf Konten mit niedrigeren Editionen replizieren.

DISABLE REPLICATION [ TO ACCOUNTS Snowflake-Region.Kontoname [ , Snowflake-Region.Kontoname ... ] ]

Deaktiviert die Replikation für diese Primärdatenbank, d. h. es kann kein Replikat dieser Datenbank (der Sekundärdatenbank) in einem anderen Konto aktualisiert werden. Alle sekundären Datenbanken bleiben mit der primären Datenbank verknüpft, allerdings werden Anforderungen zum Aktualisieren einer sekundären Datenbank abgelehnt.

Beachten Sie, dass das Deaktivieren der Replikation einer Primärdatenbank nicht die Replikation in dasselbe Konto verhindert. Daher wird die Datenbank weiterhin in der Ausgabe von SHOW REPLICATION DATABASES aufgelistet.

Geben Sie optional eine durch Kommas getrennte Liste von Konten Ihrer Organisation an, um die Replikation für diese Datenbank nur für die angegebenen Konten zu deaktivieren. Zusätzlich zum Kontonamen sind abhängig von der Region, in der sich Ihr Remote-Konto befindet, zusätzliche Segmente erforderlich:

Kontoreferenz

Qualifizierter Kontoname

Speicherort des Remote-Kontos

Konto

Dieselbe Region, aber ein anderes Konto als das Konto, in dem die Primärdatenbank gespeichert ist.

Snowflake-Region.Konto

Dieselbe Regionsgruppe, aber eine andere Region als das Konto, in dem die Primärdatenbank gespeichert ist.

Snowflake-Region

Geben Sie die Snowflake-Regions-ID für Ihre Region an, in der die einzelnen Snowflake-Konten gehostet werden. Wie Sie die Liste der Konten in Ihrer Organisation anzeigen können, ist unter SHOW REPLICATION ACCOUNTS beschrieben.

SET AUTO_REFRESH_MATERIALIZED_VIEWS_ON_SECONDARY = TRUE | FALSE

Gibt an, ob für materialisierte Ansichten in einer sekundären Datenbank eine automatische Hintergrundwartung durchgeführt werden soll.

REFRESH

Aktualisiert eine sekundäre Datenbank aus einem Snapshot der primären Datenbank. Ein Snapshot enthält Änderungen an den Objekten und Daten.

ENABLE FAILOVER TO ACCOUNTS Snowflake-Region.Kontoname [ , Snowflake-Region.Kontoname ... ]

Gibt eine durch Kommas getrennte Liste von Konten Ihrer Organisation an, für die ein Replikat dieser Primärdatenbank als Primärdatenbank heraufgestuft werden kann. Zusätzlich zum Kontonamen sind abhängig von der Region, in der sich Ihr Remote-Konto befindet, zusätzliche Segmente erforderlich:

Kontoreferenz

Qualifizierter Kontoname

Speicherort des Remote-Kontos

Konto

Dieselbe Region, aber ein anderes Konto als das Konto, in dem die Primärdatenbank gespeichert ist.

Snowflake-Region.Konto

Dieselbe Regionsgruppe, aber eine andere Region als das Konto, in dem die Primärdatenbank gespeichert ist.

Snowflake-Region

Geben Sie die Snowflake-Regions-ID für Ihre Region an, in der die einzelnen Snowflake-Konten gehostet werden. Wie Sie die Liste der Konten in Ihrer Organisation anzeigen können, ist unter SHOW REPLICATION ACCOUNTS beschrieben.

DISABLE FAILOVER [ TO ACCOUNTS Snowflake-Region.Kontoname [ , Snowflake-Region.Kontoname ... ] ]

Deaktiviert das Failover für diese Primärdatenbank, d. h. es kann kein Replikat dieser Datenbank (der Sekundärdatenbank) als Primärdatenbank heraufgestuft werden.

Geben Sie optional eine durch Kommas getrennte Liste der Konten Ihrer Organisation an, um das Failover für diese Datenbank nur für die angegebenen Konten zu deaktivieren. Zusätzlich zum Kontonamen sind abhängig von der Region, in der sich Ihr Remote-Konto befindet, zusätzliche Segmente erforderlich:

Kontoreferenz

Qualifizierter Kontoname

Speicherort des Remote-Kontos

Konto

Dieselbe Region, aber ein anderes Konto als das Konto, in dem die Primärdatenbank gespeichert ist.

Snowflake-Region.Konto

Dieselbe Regionsgruppe, aber eine andere Region als das Konto, in dem die Primärdatenbank gespeichert ist.

Snowflake-Region

Geben Sie die Snowflake-Regions-ID für Ihre Region an, in der die einzelnen Snowflake-Konten gehostet werden. Wie Sie die Liste der Konten in Ihrer Organisation anzeigen können, ist unter SHOW REPLICATION ACCOUNTS beschrieben.

PRIMARY

Stuft die angegebene sekundäre Datenbank (Replikat) als primäre Datenbank herauf. Beim Heraufstufen wird die Datenbank schreibbar. Gleichzeitig wird die vorherige Primärdatenbank zu einer schreibgeschützten Sekundärdatenbank.

Nutzungshinweise

  • Um eine Datenbank umzubenennen, muss die Rolle, mit der die Operation ausgeführt wird, die globale Berechtigung CREATE DATABASE und die OWNERSHIP-Berechtigungen für die Datenbank haben.

  • Um zwei Datenbanken auszutauschen, muss die Rolle, mit der die Operation ausgeführt wird, OWNERSHIP-Berechtigungen für beide Datenbanken haben.

Hinweise zu Datenbankreplikation und Failover

  • Datenbankreplikation und Failover können nur von Kontoadministratoren (Benutzer mit der Rolle ACCOUNTADMIN) aktiviert und verwaltet werden.

  • Bei der erstmaligen Replikation einer Primärdatenbank in eine Sekundärdatenbank besteht eine standardmäßige Größenbeschränkung von 10 TB. Um die Größenbeschränkung zu ändern oder zu entfernen, legen Sie den Parameter INITIAL_REPLICATION_SIZE_LIMIT_IN_TB auf Kontoebene fest.

    Beachten Sie, dass für nachfolgende Aktualisierungen einer Sekundärdatenbank derzeit keine Standardgrößenbeschränkung gilt.

Allgemeine Beispiele

Benennen Sie die Datenbank db1 in db2 um:

ALTER DATABASE IF EXISTS db1 RENAME TO db2;

Beispiele für die Datenbankreplikation

Heraufstufen der lokalen Datenbank mydb1 (in Region aws_us_west_2) als primäre Datenbank und Festlegen, dass die Konten myaccount2 und myaccount3 (in Regionen aws_us_east_1 (AWS) bzw. azure_westeurope (Azure)) jeweils ein Replikat dieser Datenbank speichern können:

ALTER DATABASE mydb1 ENABLE REPLICATION TO ACCOUNTS aws_us_east_1.myaccount2, azure_westeurope.myaccount3;

Deaktivieren Sie die Replikation für die primäre Datenbank mydb1:

ALTER DATABASE mydb1 DISABLE REPLICATION;