DROP DATABASE (Transact-SQL)

Entfernt eine oder mehrere Benutzerdatenbanken oder Datenbankmomentaufnahmen von einer SQL Server-Instanz bzw. Benutzerdatenbanken vom Windows Azure SQL-Datenbank-Server.

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version).

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

-- SQL Server Syntax
DROP DATABASE { database_name | database_snapshot_name } [ ,...n ] [;]

-- Windows Azure SQL Database Syntax 
DROP DATABASE database_name [;]

-- Core Syntax (common to SQL Server and SQL Database) 
DROP DATABASE database_name [;]

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.

    Betrifft: Nur SQL Server.

Allgemeine Hinweise

Core

Eine Datenbank kann unabhängig von ihrem Status gelöscht werden. offline, schreibgeschützt, fehlerverdächtig usw. 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.

SQL Server

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.

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 Datenbank-Momentaufnahmen (SQL Server). Durch das Löschen einer Datenbankmomentaufnahme wird der Plancache für die Instanz von SQL Server gelöscht. Das Löschen des Plancaches führt zu einer Neukompilierung aller nachfolgenden Ausführungspläne und kann einen plötzlichen, vorübergehenden Abfall der Abfrageleistung verursachen. Für jeden geleerten Cachespeicher im Plancache enthält das SQL Server-Fehlerprotokoll die folgende Informationsmeldung: "SQL Server hat für den '%ls'-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.

Windows Azure SQL-Datenbank

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.

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

Interoperabilität

SQL Server

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

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 Informationen zum Protokollversand (SQL Server).

Windows Azure SQL-Datenbank

Keine

Begrenzungen und Einschränkungen

Core

Systemdatenbanken können nicht gelöscht werden.

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.

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.

SQL Server

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

Windows Azure SQL-Datenbank

Sie müssen mit der master-Datenbank verbunden sein, um eine Datenbank zu löschen.

Die DROP DATABASE-Anweisung muss die einzige Anweisung in einem SQL-Batch sein, und es darf jeweils nur eine Datenbank gelöscht werden.

Berechtigungen

SQL Server

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

Windows Azure SQL-Datenbank

Datenbanken können nur durch den Prinzipalanmeldenamen auf Serverebene (vom Bereitstellungsprozess erstellt) oder Mitglieder der Datenbankrolle dbmanager gelöscht werden.

Beispiele

A.Löschen einer einzelnen Datenbank

Im folgenden Beispiel wird die Datenbank Sales entfernt.

Gilt für: SQL Server und Windows Azure SQL-Datenbank

DROP DATABASE Sales;

B.Löschen mehrerer Datenbanken

Im folgenden Beispiel wird jede der aufgelisteten Datenbanken entfernt.

Gilt für: SQL Server

DROP DATABASE Sales, NewSales;

C.Löschen einer Datenbankmomentaufnahme

Im folgenden Beispiel wird eine Datenbankmomentaufnahme mit dem Namen sales_snapshot0600 entfernt, ohne dass sich dies auf die Quelldatenbank auswirkt.

Gilt für: SQL Server

DROP DATABASE sales_snapshot0600;

Siehe auch

Verweis

ALTER DATABASE (Transact-SQL)

CREATE DATABASE (Transact-SQL)

EVENTDATA (Transact-SQL)

sys.databases (Transact-SQL)