DROP DATABASE (Transact-SQL)DROP DATABASE (Transact-SQL)

GILT FÜR: jaSQL Server (ab 2008) jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Entfernt eine oder mehrere Benutzerdatenbanken oder Datenbank-Momentaufnahmen aus einer SQL ServerSQL Server-Instanz.Removes one or more user databases or database snapshots from an instance of SQL ServerSQL Server.

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

-- SQL Server Syntax
DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ] [;]
-- Azure SQL Database, Azure SQL Data Warehouse and Analytics Platform System Syntax
DROP DATABASE database_name [;]

ArgumenteArguments

IF EXISTS Gilt für: SQL ServerSQL Server (SQL Server 2016 (13.x)SQL Server 2016 (13.x)bis aktuelle Version).IF EXISTS Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through current version).

Löscht die Datenbank nur, wenn diese bereits vorhanden ist.Conditionally drops the database only if it already exists.

database_name Gibt den Namen der zu entfernenden Datenbank an.database_name Specifies the name of the database to be removed. Zum Anzeigen einer Liste von Datenbanken verwenden Sie die sys.databases-Katalogsicht.To display a list of databases, use the sys.databases catalog view.

database_snapshot_name Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.database_snapshot_name Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Gibt den Namen der zu entfernenden Datenbankmomentaufnahme an.Specifies the name of a database snapshot to be removed.

Allgemeine HinweiseGeneral Remarks

Eine Datenbank kann unabhängig von ihrem Status (offline, schreibgeschützt, fehlerverdächtig usw.) gelöscht werden.A database can be dropped regardless of its state: offline, read-only, suspect, and so on. Zur Anzeige des aktuellen Status einer Datenbank verwenden Sie die sys.databases-Katalogsicht.To display the current state of a database, use the sys.databases catalog view.

Eine gelöschte Datenbank kann nur neu erstellt werden, indem eine Sicherungskopie wiederhergestellt wird.A dropped database can be re-created only by restoring a backup. Datenbankmomentaufnahmen können nicht gesichert und somit nicht wiederhergestellt werden.Database snapshots cannot be backed up and, therefore, cannot be restored.

Vor dem Löschen einer Datenbank sollte die Masterdatenbank gesichert werden.When a database is dropped, the master database should be backed up.

Beim Löschen einer Datenbank wird die Datenbank von der SQL ServerSQL Server-Instanz entfernt, und die von der Datenbank verwendeten physischen Datenträgerdateien werden gelöscht.Dropping a database deletes the database from an instance of SQL ServerSQL Server and deletes the physical disk files used by the database. Wenn die Datenbank oder eine ihrer Dateien beim Löschen offline ist, werden die Datenträgerdateien nicht gelöscht.If the database or any one of its files is offline when it is dropped, the disk files are not deleted. Diese Dateien können manuell mit dem Windows-Explorers gelöscht werden.These files can be deleted manually by using Windows Explorer. Verwenden Sie sp_detach_db, um eine Datenbank vom aktuellen Server zu entfernen, ohne dass die Dateien aus dem Dateisystem gelöscht werden.To remove a database from the current server without deleting the files from the file system, use sp_detach_db.

Warnung

Sie können zwar eine Datenbankdatei entfernen, der FILE_SNAPSHOT-Sicherungen zugeordnet sind, jedoch werden keine Datenbankdateien gelöscht, denen Momentaufnahmen zugeordnet sind, um zu vermeiden, dass die Sicherungen, die auf die Datenbankdatei verweisen, ungültig gemacht werden.Dropping a database that has FILE_SNAPSHOT backups associated with it will succeed, but the database files that have associated snapshots will not be deleted to avoid invalidating the backups referring to these database files. Die Datei wird zwar abgeschnitten, aber nicht physisch gelöscht, damit die FILE_SNAPSHOT-Sicherungen vollständig erhalten bleiben.The file will be truncated, but will not be physically deleted in order to keep the FILE_SNAPSHOT backups intact. Weitere Informationen finden Sie unter SQL Server-Sicherung und -Wiederherstellung mit dem Microsoft Azure Blob Storage Service.For more information, see SQL Server Backup and Restore with Microsoft Azure Blob Storage Service. Gilt für: SQL Server 2016 (13.x)SQL Server 2016 (13.x) bis zur aktuellen Version.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) through current version.

SQL ServerSQL Server

Wenn Sie eine Datenbankmomentaufnahme löschen, wird diese aus einer SQL ServerSQL Server-Instanz gelöscht. Außerdem werden die Sparsedateien des physischen NTFS-Dateisystems gelöscht, die von der Momentaufnahme verwendet werden.Dropping a database snapshot deletes the database snapshot from an instance of SQL ServerSQL Server and deletes the physical NTFS File System sparse files used by the snapshot. Informationen zum Verwenden von Sparsedateien für Datenbankmomentaufnahmen finden Sie unter Datenbankmomentaufnahmen.For information about using sparse files by database snapshots, see Database Snapshots. Durch das Löschen einer Datenbankmomentaufnahme wird der Plancache für die Instanz von SQL ServerSQL Server gelöscht.Dropping a database snapshot clears the plan cache for the instance of SQL ServerSQL Server. 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.Clearing the plan cache causes a recompilation of all subsequent execution plans and can cause a sudden, temporary decrease in query performance. Für jeden geleerten Cachespeicher im Plancache enthält das SQL ServerSQL Server-Fehlerprotokoll folgende Meldung zur Information: „SQL ServerSQL Server hat für den "%2!s!"-Cachespeicher (Bestandteil des Plancache) %1!s! Leerungen des Cachespeichers gefunden, die von Datenbankwartungs- oder Neukonfigurierungsvorgängen ausgelöst wurden.“.For each cleared cachestore in the plan cache, the SQL ServerSQL Server error log contains the following informational message: " SQL ServerSQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations". Diese Meldung wird alle fünf Minuten protokolliert, solange der Cache innerhalb dieses Zeitintervalls geleert wird.This message is logged every five minutes as long as the cache is flushed within that time interval.

InteroperabilitätInteroperability

SQL ServerSQL 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.To drop a database published for transactional replication, or published or subscribed to merge replication, you must first remove replication from the database. 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.If a database is damaged or replication cannot first be removed or both, in most cases you still can drop the database by using ALTER DATABASE to set the database offline and then dropping it.

Wenn die Datenbank für den Protokollversand verwendet wird, müssen Sie den Protokollversand vor dem Löschen der Datenbank entfernen.If the database is involved in log shipping, remove log shipping before dropping the database. Weitere Informationen finden Sie unter Informationen zum Protokollversand.For more information, see About Log Shipping.

EinschränkungenLimitations and Restrictions

Systemdatenbanken können nicht gelöscht werden.System databases cannot be dropped.

Die DROP DATABASE-Anweisung muss im Autocommitmodus ausgeführt werden und ist in einer expliziten oder impliziten Transaktion nicht zulässig.The DROP DATABASE statement must run in autocommit mode and is not allowed in an explicit or implicit transaction. Der Autocommitmodus ist der Standardmodus für die Transaktionsverwaltung.Autocommit mode is the default transaction management mode.

Sie können eine aktuell verwendete Datenbank nicht löschen.You cannot drop a database currently being used. Dies bezieht sich auf eine von einem beliebigen Benutzer für Schreib- oder Lesevorgänge geöffnete Datei.This means open for reading or writing by any user. Zum Entfernen von Benutzern aus der Datenbank können Sie z.B. die Datenbank mithilfe von ALTER DATABASE auf SINGLE_USER festlegen.One way to remove users from the database is to use ALTER DATABASE to set the database to SINGLE_USER.

Warnung

Bei diesem Ansatz können allerdings Fehler auftreten, da die erste von vielen Verbindungen, die von einem beliebigen Thread hergestellt werden, immer einen SINGLE_USER-Thread erhält, wodurch die Verbindung fehlschlägt.This is not a fail-proof approach, since first consecutive connection made by any thread will receive the SINGLE_USER thread, causing your connection to fail. In SQL-Server ist keine Komponente zum Entfernen von Datenbanken unter Last integriert.Sql server does not provide a built-in way to drop databases under load.

SQL ServerSQL Server

Alle Datenbankmomentaufnahmen in einer Datenbank müssen vor dem Löschen der Datenbank gelöscht werden.Any database snapshots on a database must be dropped before the database can be dropped.

Wenn eine Datenbank gelöscht wird, die für Stretch Database aktiviert ist, werden keine Remotedaten gelöscht.Dropping a database enable for Stretch Database does not remove the remote data. Wenn Sie die Remotedaten löschen möchten, müssen Sie dies manuell tun.If you want to delete the remote data, you have to remove it manually.

Azure SQL-DatenbankAzure SQL Database

Sie müssen mit der master-Datenbank verbunden sein, um eine Datenbank zu löschen.You must be connected to the master database to drop a database.

Die DROP DATABASE-Anweisung muss die einzige Anweisung in einem SQL-Batch sein, und es darf jeweils nur eine Datenbank gelöscht werden.The DROP DATABASE statement must be the only statement in a SQL batch and you can drop only one database at a time.

Azure SQL Data WarehouseAzure SQL Data Warehouse

Sie müssen mit der master-Datenbank verbunden sein, um eine Datenbank zu löschen.You must be connected to the master database to drop a database.

Die DROP DATABASE-Anweisung muss die einzige Anweisung in einem SQL-Batch sein, und es darf jeweils nur eine Datenbank gelöscht werden.The DROP DATABASE statement must be the only statement in a SQL batch and you can drop only one database at a time.

BerechtigungenPermissions

SQL ServerSQL Server

Erfordert die CONTROL-Berechtigung für die Datenbank, die ALTER ANY DATABASE-Berechtigung oder die Mitgliedschaft in der festen Datenbankrolle db_owner.Requires the CONTROL permission on the database, or ALTER ANY DATABASE permission, or membership in the db_owner fixed database role.

Azure SQL-DatenbankAzure SQL Database

Datenbanken können nur durch den Prinzipalanmeldenamen auf Serverebene (vom Bereitstellungsprozess erstellt) oder Mitglieder der Datenbankrolle dbmanager gelöscht werden.Only the server-level principal login (created by the provisioning process) or members of the dbmanager database role can drop a database.

Parallel Data WarehouseParallel Data Warehouse

Erfordert die CONTROL-Berechtigung für die Datenbank, die ALTER ANY DATABASE-Berechtigung oder die Mitgliedschaft in der festen Datenbankrolle db_owner.Requires the CONTROL permission on the database, or ALTER ANY DATABASE permission, or membership in the db_owner fixed database role.

BeispieleExamples

A.A. Löschen einer einzelnen DatenbankDropping a single database

Im folgenden Beispiel wird die Datenbank Sales entfernt.The following example removes the Sales database.

DROP DATABASE Sales;

B.B. Löschen mehrerer DatenbankenDropping multiple databases

Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Im folgenden Beispiel wird jede der aufgelisteten Datenbanken entfernt.The following example removes each of the listed databases.

DROP DATABASE Sales, NewSales;

C.C. Löschen einer DatenbankmomentaufnahmeDropping a database snapshot

Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Im folgenden Beispiel wird eine Datenbankmomentaufnahme mit dem Namen sales_snapshot0600 entfernt, ohne dass sich dies auf die Quelldatenbank auswirkt.The following example removes a database snapshot, named sales_snapshot0600, without affecting the source database.

DROP DATABASE sales_snapshot0600;

Weitere InformationenSee Also