Kategorien:

DDL für Datenbanken, Schemas und Freigaben

DROP DATABASE

Entfernt eine Datenbank aus dem System.

Siehe auch:

CREATE 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:

    1. Innerhalb der Aufbewahrungsfrist für Time Travel kann eine gelöschte Datenbank mit dem Befehl UNDROP DATABASE wiederhergestellt werden.

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

    3. Sobald eine entfernte Datenbank bereinigt wurde, kann sie nicht mehr wiederhergestellt werden, sie muss neu erstellt werden.

  • Nach dem Entfernen 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:

    1. Benennen Sie die aktuelle Version der Datenbank um.

    2. Verwenden Sie den Befehl UNDROP DATABASE, um die vorherige Version wiederherzustellen.

  • Wenn eine für Sicherheit auf Spaltenebene eine Maskierungsrichtlinie an eine Tabelle oder Ansichtsspalte angehängt ist, muss die Maskierungsrichtlinie zum erfolgreichen Löschen der Datenbank in Datenbank und Schema eigenständig sein. Beispielsweise enthält „Datenbank_1“ die Richtlinie „Richtlinie_1“, wobei „Richtlinie_1“ wird nur in „Datenbank_1“ verwendet wird.

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 |
+---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+