DROP DATABASE (Transact-SQL)

Entfernt eine oder mehrere Datenbanken oder Datenbankmomentaufnahmen von einer SQL Server-Instanz. 

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

DROP DATABASE { database_name | database_snapshot_name } [ ,...n ] 
[;]

Argumente

  • database_name
    Gibt den Namen der zu entfernenden Datenbank an. Zum Anzeigen einer Liste von Datenbanken verwenden Sie die sys.databases-Katalogsicht.

  • database_snapshot_name
    Gibt den Namen der zu entfernenden Datenbankmomentaufnahme an.

Hinweise

Für die Verwendung von DROP DATABASE kann der Datenbankkontext der Verbindung nicht mit dem der zu löschenden Datenbank bzw. der zu löschenden Datenbankmomentaufnahme übereinstimmen.

Die DROP DATABASE-Anweisung muss im Autocommitmodus ausgeführt werden und ist in einer expliziten oder impliziten Transaktion nicht zulässig. Der Autocommitmodus ist der Standardmodus für die Transaktionsverwaltung. Weitere Informationen finden Sie unter Autocommit-Transaktionen.

Löschen einer Datenbank

Systemdatenbanken können nicht gelöscht werden.

Beim Löschen einer Datenbank wird die Datenbank von der SQL Server-Instanz entfernt, und die von der Datenbank verwendeten physischen Datenträgerdateien werden gelöscht. Wenn die Datenbank oder eine ihrer Dateien beim Löschen offline ist, werden die Datenträgerdateien nicht gelöscht. Diese Dateien können manuell mit dem Windows-Explorers gelöscht werden. Verwenden Sie sp_detach_db, um eine Datenbank vom aktuellen Server zu entfernen, ohne dass die Dateien aus dem Dateisystem gelöscht werden.

Sie können eine aktuell verwendete Datenbank nicht löschen. Dies bezieht sich auf eine von einem beliebigen Benutzer für Schreib- oder Lesevorgänge geöffnete Datei. Zum Entfernen von Benutzern aus der Datenbank legen Sie die Datenbank mithilfe von ALTER DATABASE auf SINGLE_USER fest.

Alle Datenbankmomentaufnahmen in einer Datenbank müssen vor dem Löschen der Datenbank gelöscht werden.

Wenn die Datenbank für den Protokollversand verwendet wird, müssen Sie den Protokollversand vor dem Löschen der Datenbank entfernen. Weitere Informationen finden Sie unter Protokollversandverwaltung.

Eine Datenbank kann unabhängig von ihrem Status (offline, schreibgeschützt, fehlerverdächtig usw.) gelöscht werden. Zur Anzeige des aktuellen Status einer Datenbank verwenden Sie die sys.databases-Katalogsicht.

Eine gelöschte Datenbank kann nur neu erstellt werden, indem eine Sicherungskopie wiederhergestellt wird. Datenbankmomentaufnahmen können nicht gesichert und somit nicht wiederhergestellt werden.

Vor dem Löschen einer Datenbank sollte die master-Datenbank gesichert werden.

Löschen einer Datenbankmomentaufnahme

Wenn Sie eine Datenbankmomentaufnahme löschen, wird diese aus einer SQL Server-Instanz gelöscht. Außerdem werden die Dateien mit geringer Dichte des physischen NTFS-Dateisystems gelöscht, die von der Momentaufnahme verwendet werden. Informationen zum Verwenden von Dateien mit geringer Dichte für Datenbankmomentaufnahmen finden Sie unter Funktionsweise von Datenbanksnapshots.

Durch das Löschen einer Datenbankmomentaufnahme wird der Plancache für die Instanz von SQL Server gelöscht. Durch das Löschen des Plancaches wird eine Neukompilierung aller nachfolgenden Ausführungspläne verursacht, und möglicherweise entsteht plötzlich eine temporäre Verringerung der Abfrageleistung. Für jeden geleerten Cachespeicher im Plancache enthält das SQL Server-Fehlerprotokoll folgende Meldung zur Information: "SQL Server hat für den '%s'-Cachespeicher (Bestandteil des Plancache) %d Leerungen des Cachespeichers gefunden, die von Datenbankwartungs- oder Neukonfigurierungsvorgängen ausgelöst wurden." Diese Meldung wird alle fünf Minuten protokolliert, solange der Cache innerhalb dieses Zeitintervalls geleert wird.

Löschen einer bei der Replikation verwendeten Datenbank

Zum Löschen einer für die Transaktionsreplikation oder die Mergereplikation veröffentlichten Datenbank bzw. einer von der Mergereplikation abonnierten Datenbank müssen Sie zunächst die Replikation von der Datenbank entfernen. Weitere Informationen zum Entfernen der Replikation von einer Datenbank finden Sie unter Entfernen der Replikation. Wenn eine Datenbank beschädigt ist oder die Replikation nicht zuerst entfernt werden kann, oder wenn beides zutrifft, können Sie die Datenbank dennoch mithilfe von ALTER DATABASE löschen. Sie legen hierzu den Status der Datenbank auf offline fest und löschen diese dann.

Berechtigungen

Erfordert die CONTROL-Berechtigung für die Datenbank oder die ALTER ANY DATABASE-Berechtigung oder die Mitgliedschaft in der festen Datenbankrolle db_owner.

Beispiele

A. Löschen einer einzelnen Datenbank

Im folgenden Beispiel wird die Datenbank Sales entfernt.

DROP DATABASE Sales;

B. Löschen mehrerer Datenbanken

Im folgenden Beispiel wird jede der aufgelisteten Datenbanken entfernt.

DROP DATABASE Sales, NewSales;

C. Löschen einer Datenbankmomentaufnahme

Im folgenden Beispiel wird eine Datenbankmomentaufnahme namens sales_snapshot0600 gelöscht, ohne dass sich dies auf die Quelldatenbank auswirkt.

DROP DATABASE sales_snapshot0600;