DROP DATABASE (Transact-SQL)
从 SQL Server 实例中删除一个或多个数据库或数据库快照。
语法
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 错误日志包含以下信息性消息:“由于某些数据库维护或重新配置操作,SQL Server 经历了“%s”缓存存储区(计划缓存的一部分)的 %d 次刷新。”只要每五分钟刷新一次缓存,此消息就将每五分钟记录一次。
删除复制中使用的数据库
若要删除针对事务复制发布的数据库,或者删除针对合并复制发布或订阅的数据库,必须首先从数据库中删除复制。有关如何从数据库中删除复制的详细信息,请参阅删除复制。如果数据库损坏或无法首先删除复制,或二者兼备,那么在多数情况下仍然可以删除数据库,方法是使用 ALTER DATABASE 将数据库设置为脱机,然后将其删除。
权限
要求对数据库具有 CONTROL 权限或 ALTER ANY DATABASE 权限,或者具有 db_owner 固定数据库角色的成员身份。
示例
A. 删除单个数据库
以下示例删除 Sales 数据库。
DROP DATABASE Sales;
B. 删除多个数据库
以下示例删除每个列出的数据库。
DROP DATABASE Sales, NewSales;
C. 删除数据库快照
以下示例在不影响源数据库的情况下,删除名为 sales_snapshot0600 的数据库快照。
DROP DATABASE sales_snapshot0600;