DROP DATABASE (Transact-SQL)

更新日期: 2006 年 12 月 12 日

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

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

语法

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

参数

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

备注

若要使用 DROP DATABASE,则连接的数据库上下文不能与要删除的数据库或数据库快照相同。

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

删除数据库

无法删除系统数据库

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

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

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

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

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

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

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

删除数据库快照

执行删除数据库快照操作会从 SQL Server 实例中删除数据库快照,并删除该快照使用的物理 NTFS 文件系统稀疏文件。有关数据库快照使用稀疏文件的详细信息,请参阅数据库快照的工作方式

删除数据库快照将清除 SQL Server 实例的计划缓存。清除计划缓存将导致对所有后续执行计划进行重新编译,并可能导致查询性能暂时性地突然降低。在 SQL Server 2005 Service Pack 2 中,对于计划缓存中的各个已清除的缓存存储区而言,SQL Server 错误日志将包含以下信息性消息:“由于某些数据库维护或重新配置操作,SQL Server 经历了 '%s' 缓存存储区(计划缓存的一部分)的 %d 次刷新”。只要每五分钟刷新一次缓存,此消息就将每五分钟记录一次。

删除复制中使用的数据库

若要删除针对事务性复制发布的数据库,或者删除针对合并复制发布或订阅的数据库,必须首先从数据库中删除复制。有关如何从数据库中删除复制的详细信息,请参阅删除复制。如果数据库损坏或无法首先删除复制,或二者兼备,那么在多数情况下仍然可以删除数据库,方法是使用 ALTER DATABASE 将数据库设置为脱机,然后将其删除。

权限

若要执行 DROP DATABASE 操作,用户必须至少对数据库具有 CONTROL 权限。

示例

A. 删除单个数据库

以下示例删除 Sales 数据库。

DROP DATABASE Sales;

B. 删除多个数据库

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

DROP DATABASE Sales, NewSales;

C. 删除数据库快照

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

DROP DATABASE sales_snapshot0600;

请参阅

参考

ALTER DATABASE (Transact-SQL)
CREATE DATABASE (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.databases (Transact-SQL)

其他资源

删除数据库
删除数据库快照

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

新增内容:
  • 在“删除数据库快照”部分添加了有关清除计划缓存的信息。

2006 年 7 月 17 日

新增内容:
  • 添加了使用 sp_detach_db 作为删除数据库的替代方法的参考。