DROP DATABASE (Transact-SQL)

从 SQL Server 实例中删除一个或多个用户数据库或数据库快照。

适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。

主题链接图标 Transact-SQL 语法约定

语法

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

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

参数

  • database_name
    指定要删除的数据库的名称。 若要显示数据库列表,请使用 sys.databases 目录视图。

  • database_snapshot_name

    适用于:SQL Server 2008 到 SQL Server 2014。

    指定要删除的数据库快照的名称。

一般备注

无论数据库处于下列哪种状态,都可将其删除:脱机状态、只读状态或可疑状态等。 若要显示数据库的当前状态,请使用 sys.databases 目录视图。

只有通过还原备份才能重新创建已删除的数据库。 数据库快照无法备份,因此也就无法还原。

删除数据库时,应备份 master 数据库

执行数据库删除操作会从 SQL Server 实例中删除数据库,并删除该数据库使用的物理磁盘文件。 执行删除操作时,如果数据库或它的任意一个文件处于脱机状态,则不会删除磁盘文件。 可使用 Windows 资源管理器手动删除这些文件。 若要从当前服务器删除数据库,但不从文件系统删除文件,请使用 sp_detach_db

SQL Server

执行数据库快照删除操作会从 SQL Server 实例中删除数据库快照,并删除该快照使用的物理 NTFS 文件系统稀疏文件。 有关数据库快照使用稀疏文件的详细信息,请参阅数据库快照 (SQL Server)。 删除数据库快照将清除 SQL Server 实例的计划缓存。 清除计划缓存将导致对所有后续执行计划进行重新编译,并可能导致查询性能暂时性地突然降低。对于计划缓存中每个已清除的缓存存储区,SQL Server 错误日志都包含以下信息性消息:“由于某些数据库维护或重新配置操作,SQL Server 经历了 '%s' 缓存存储区(计划缓存的一部分)的 %d 次刷新”。 每隔五分钟,只要缓存在这段时间间隔内得到刷新,此消息就记录一次。

互操作性

SQL Server

若要删除针对事务复制发布的数据库,或者删除针对合并复制发布或订阅的数据库,必须首先从数据库中删除复制。 如果数据库损坏或无法首先删除复制,或这两种情况同时存在,那么在多数情况下仍然可以删除数据库,方法是使用 ALTER DATABASE 将数据库设置为脱机,然后将其删除。

如果数据库涉及日志传送操作,请在删除数据库之前取消日志传送操作。 有关详细信息,请参阅关于日志传送 (SQL Server)

Windows Azure SQL Database

限制和局限

无法删除系统数据库

DROP DATABASE 语句必须在自动提交模式下运行,并且不允许在显式或隐式事务中使用。 自动提交模式是默认的事务管理模式。

不能删除当前正在使用的数据库。 这表示数据库正处于打开状态,以供用户读写。 若要从数据库中删除用户,请使用 ALTER DATABASE 将数据库设置为 SINGLE_USER。

SQL Server

在删除数据库之前,必须将该数据库上的所有数据库快照都删除。

Windows Azure SQL Database

您必须连接到 master 数据库来删除数据库。

DROP DATABASE 语句必须是 SQL 批处理中的唯一语句,您一次只能删除一个数据库。

权限

SQL Server

要求对数据库具有 CONTROL 权限或者 ALTER ANY DATABASE 权限,或者在 db_owner 固定数据库角色中具有成员身份。

Windows Azure SQL Database

只有服务器级主体登录名(由设置过程创建)或 dbmanager 数据库角色的成员可以删除数据库。

示例

A.删除单个数据库

以下示例删除 Sales 数据库。

DROP DATABASE Sales;

B.删除多个数据库

适用于:SQL Server 2008 到 SQL Server 2014。

以下示例删除每个列出的数据库。

DROP DATABASE Sales, NewSales;

C.删除数据库快照

适用于:SQL Server 2008 到 SQL Server 2014。

以下示例在不影响源数据库的情况下,删除名为 sales_snapshot0600 的数据库快照。

DROP DATABASE sales_snapshot0600;

请参阅

参考

ALTER DATABASE (Transact-SQL)

CREATE DATABASE (SQL Server Transact-SQL)

EVENTDATA (Transact-SQL)

sys.databases (Transact-SQL)