DROP DATABASE¶
Entfernt eine Datenbank aus dem System.
- Siehe auch:
CREATE DATABASE, ALTER DATABASE, DESCRIBE DATABASE, SHOW DATABASES, UNDROP DATABASE
Syntax¶
DROP DATABASE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
Parameter¶
name
Gibt den Bezeichner für die zu löschende 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.
CASCADE | RESTRICT
Gibt an, ob die Datenbank gelöscht werden kann, wenn Fremdschlüssel existieren, die auf Tabellen in der Datenbank verweisen:
CASCADE
entfernt die Datenbank und alle Objekte in der Datenbank, einschließlich Tabellen mit Primär-/eindeutigen Schlüsseln, die von Fremdschlüsseln in anderen Tabellen referenziert werden.RESTRICT
gibt eine Warnung über bestehende Fremdschlüsselreferenzen zurück und entfernt die Datenbank nicht.
Standard:
CASCADE
Nutzungshinweise¶
Das Löschen einer Datenbank entfernt diese nicht dauerhaft aus dem System. Eine Version der entfernten Datenbank wird in Time Travel für die Anzahl der Tage gespeichert, die im Parameter
DATA_RETENTION_TIME_IN_DAYS
für die Datenbank angegeben ist:Innerhalb der Aufbewahrungsfrist für Time Travel kann eine gelöschte Datenbank mit dem Befehl UNDROP DATABASE wiederhergestellt werden.
Wenn die Aufbewahrungsfrist für Time Travel endet, hängt der nächste Status der gelöschten Datenbank davon ab, ob sie permanent oder transient ist:
Eine permanente Datenbank wird nach Fail-safe verschoben. Eine gelöschte Datenbank in Fail-safe (7 Tage) kann wiederhergestellt werden, allerdings nur von Snowflake. Wenn die Datenbank Fail-safe verlässt, wird sie bereinigt.
Eine transiente Datenbank hat kein Fail-safe, sodass sie bereinigt wird, wenn sie aus Time Travel verschoben wird.
Sobald eine gelöschte Datenbank bereinigt wurde, kann sie nicht mehr wiederhergestellt werden, sondern muss neu erstellt werden.
Derzeit wird bei der Löschung einer Datenbank die Datenaufbewahrungsfrist von untergeordneten Schemas oder Tabellen nicht berücksichtigt, falls deren Frist anders als die Aufbewahrungsfrist der Datenbank ist. Die untergeordneten Schemas oder Tabellen werden so lange aufbewahrt wie die Datenbank. Damit die Datenaufbewahrungsfrist für diese untergeordneten Objekte (Schemas oder Tabellen) berücksichtigt wird, müssen Sie diese Objekte explizit löschen, bevor Sie die Datenbank oder das Schema löschen.
Nach dem Löschen einer Datenbank wird durch das Erstellen einer Datenbank mit dem gleichen Namen eine neue Version der Datenbank angelegt. Die entfernte Version der vorherigen Datenbank kann mit der folgenden Methode wiederhergestellt werden:
Benennen Sie die aktuelle Version der Datenbank um.
Verwenden Sie den Befehl UNDROP DATABASE, um die vorherige Version wiederherzustellen.
Wenn eine Richtlinie oder ein Tag einer Tabelle oder Ansichtsspalte zugewiesen ist, muss die Richtlinie bzw. das Tag zum erfolgreichen Löschen der Datenbank in Datenbank und Schema eigenständig sein. Beispielsweise enthält
database_1
policy_1
, undpolicy_1
wird nur indatabase_1
verwendet. Andernfalls entsteht eine verwaiste Referenz.Die Löschoperation (DROP) schlägt fehl, wenn für einen Benutzer oder das Konto eine Sitzungsrichtlinie oder eine Kennwortrichtlinie festgelegt ist.
Nutzungshinweise zur Datenbankreplikation¶
Sie können eine sekundäre Datenbank jederzeit löschen. Nur der Datenbankeigentümer (d. h. die Rolle mit der Berechtigung OWNERSHIP für die Datenbank) kann die Datenbank löschen.
Eine primäre Datenbank kann nicht gelöscht werden, wenn eine oder mehrere Replikate dieser Datenbank (d. h. sekundäre Datenbanken) vorhanden sind. Um die Primärdatenbank zu löschen, müssen Sie zuerst eine Sekundärdatenbank zur Primärdatenbank heraufstufen, erst danach können Sie die bisherige Primärdatenbank löschen. Löschen Sie alternativ alle sekundären Datenbanken der primären Datenbank, und löschen Sie dann die primäre Datenbank.
Beachten Sie, dass nur der Datenbankeigentümer die Datenbank löschen kann.
Beispiele¶
DROP DATABASE mytestdb2; +---------------------------------+ | status | |---------------------------------| | MYTESTDB2 successfully dropped. | +---------------------------------+ SHOW DATABASES LIKE 'mytestdb2'; +------------+------+------------+------------+--------+-------+---------+---------+----------------+ | created_on | name | is_default | is_current | origin | owner | comment | options | retention_time | |------------+------+------------+------------+--------+-------+---------+---------+----------------| +------------+------+------------+------------+--------+-------+---------+---------+----------------+ SHOW DATABASES HISTORY LIKE 'mytestdb2'; +---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+ | created_on | name | is_default | is_current | origin | owner | comment | options | retention_time | dropped_on | |---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------| | Wed, 25 Feb 2015 16:16:54 -0800 | MYTESTDB2 | N | N | | PUBLIC | | | 1 | Fri, 13 May 2016 17:35:09 -0700 | +---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+