ALTER DATABASE

Ändert die Eigenschaften für eine bestehende Datenbank.

Dies umfasst folgende Datenbankänderungen:

  • Ä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, DESCRIBE DATABASE, DROP DATABASE, SHOW DATABASES, UNDROP DATABASE

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 = <integer> ]
                                        [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
                                        [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                        [ LOG_LEVEL = '<log_level>' ]
                                        [ TRACE_LEVEL = '<trace_level>' ]
                                        [ COMMENT = '<string_literal>' ]

ALTER DATABASE <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER DATABASE <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

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

Syntax für Datenbankreplikation und Failover

Datenbankreplikation

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

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

ALTER DATABASE <name> REFRESH
Copy

Datenbank-Failover

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

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

ALTER DATABASE <name> PRIMARY
Copy

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ß-/Kleinschreibung zu beachten.

RENAME TO new_db_name

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 target_db_name

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 = num

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.

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

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.

DEFAULT_DDL_COLLATION = 'collation_specification'

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.

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. Weitere Informationen zum Festlegen des Protokolliergrads finden Sie unter Einstellen des Protokolliergrads.

TRACE_LEVEL = 'trace_level'

Steuert, wie Ablaufverfolgungsereignisse in der Ereignistabelle erfasst werden.

Weitere Informationen zu Protokolliergraden finden Sie unter TRACE_LEVEL. Weitere Informationen zum Festlegen der Ablaufverfolgungsebene finden Sie unter Einstellen des Protokolliergrads (Ablaufverfolgungsebene).

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.

COMMENT = 'string_literal'

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

  • MAX_DATA_EXTENSION_TIME_IN_DAYS

  • DEFAULT_DDL_COLLATION

  • TAG tag_name [ , tag_name ... ]

  • 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 account_identifier [ , account_identifier ... ]

Heraufstufen einer lokalen Datenbank zur Primärdatenbank 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.

account_identifier

Eindeutiger Bezeichner des Kontos. Der bevorzugte Bezeichner hat das Format organization_name.account_name. Fragen Sie SHOW REPLICATION ACCOUNTS ab, um die Liste der Konten 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 zu Datenbankreplikation und Failover.

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äß HIPAA- und HITRUST-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öher) handelt.

Beide Szenarios sind standardmäßig nicht erlaubt, 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 account_identifier [ , account_identifier ... ] ]

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.

account_identifier

Eindeutiger Bezeichner des Kontos. Der bevorzugte Bezeichner hat das Format organization_name.account_name. Fragen Sie SHOW REPLICATION ACCOUNTS ab, um die Liste der Konten 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 zu Datenbankreplikation und Failover.

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 account_identifier [ , account_identifier ... ]

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.

account_identifier

Eindeutiger Bezeichner des Kontos. Der bevorzugte Bezeichner hat das Format organization_name.account_name. Fragen Sie SHOW REPLICATION ACCOUNTS ab, um die Liste der Konten 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 zu Datenbankreplikation und Failover.

DISABLE FAILOVER [ TO ACCOUNTS account_identifier [ , account_identifier ... ] ]

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.

account_identifier

Eindeutiger Bezeichner des Kontos. Der bevorzugte Bezeichner hat das Format organization_name.account_name. Fragen Sie SHOW REPLICATION ACCOUNTS ab, um die Liste der Konten 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 zu Datenbankreplikation und Failover.

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

  • Zum Umbenennen einer Datenbank ist eine Rolle erforderlich, die über die globale Berechtigung CREATE DATABASE sowie die OWNERSHIP-Berechtigung für die Datenbank verfügt.

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

  • Zum Aktualisieren eines Kommentars ist eine Rolle erforderlich, der die Berechtigung MODIFY für die Datenbank erteilt wurde oder die diese geerbt hat.

  • Hinweis zu 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 Datenbankreplikation und Failover

Bemerkung

Snowflake empfiehlt die Verwendung des Features Einführung in Replikation und Failover über mehrere Konten zum Replizieren von Datenbanken. Replikations- und Failover-Gruppen ermöglichen die Replikation von mehreren Datenbanken und anderen Kontoobjekten mit zeitpunktbezogener Konsistenz für Objekte in der Gruppe. Eine vollständige Liste der Feature-Verfügbarkeit und der unterstützten Objekte finden Sie unter Einführung in Replikation und Failover über mehrere Konten.

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

  • Bei der bevorzugten Methode zum Identifizieren eines Kontos werden der Name der Organisation und der Kontoname als Kontobezeichner verwendet. Wenn Sie sich entscheiden, stattdessen den alten Konto-Locator zu verwenden, muss dieser möglicherweise zusätzliche Segmente enthalten, um das Konto eindeutig zu identifizieren. Siehe Tabelle unten als Referenz:

    Kontobezeichner

    Speicherort des Remotekontos

    organization_name.account_name

    Bevorzugter Kontobezeichner, der unabhängig von der Region oder Regionsgruppe des Kontos, das die Primärdatenbank speichert, verwendet werden kann.

    account_locator

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

    snowflake_region.account_locator

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

    region_group.snowflake_region.account_locator

    Andere Regionsgruppe des Kontos, in dem die Primärdatenbank gespeichert ist.

Allgemeine Beispiele

Benennen Sie die Datenbank db1 in db2 um:

ALTER DATABASE IF EXISTS db1 RENAME TO db2;
Copy

Beispiele für die Datenbankreplikation

Heraufstufen der lokalen Datenbank mydb1 (in Konto account1) zur Primärdatenbank und Festlegen, dass die Konten account2 und account3 der Organisation myorg jeweils ein Replikat dieser Datenbank speichern können:

ALTER DATABASE mydb1 ENABLE REPLICATION TO ACCOUNTS myorg.account2, myorg.account3;
Copy

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

ALTER DATABASE mydb1 DISABLE REPLICATION;
Copy