23

当我尝试删除或恢复数据库时,SQL Server 一直告诉我数据库正在使用中,但是当我运行此元数据查询时:

select * from sys.sysprocesses 
where dbid 
  in (select database_id from sys.databases where name = 'NameOfDb')

它什么也不返回。

有时它会返回 1 个进程,它是一个 CHECKPOINT_QUEUE 等待类型。如果我试图杀死该进程,它不会让我(不能杀死非用户进程)。

有人知道出了什么问题吗?

4

3 回答 3

36

我喜欢这个脚本。不要与杀戮斗争..

use master

alter database xyz set single_user with rollback immediate

restore database xyz ...

alter database xyz set multi_user
于 2012-12-02T18:10:04.333 回答
17

尝试从备份还原数据库时遇到了同样的问题。对我来说,解决方案是确保在执行还原之前在选项页面中选中“覆盖现有数据库(WITH REPLACE)”和“关闭与目标数据库的现有连接”。这是下面的屏幕截图。

在此处输入图像描述

于 2016-08-22T19:53:04.560 回答
15

可能有很多东西阻塞了您的数据库。例如,如果您在该数据库上打开了一个查询窗口,它将被您锁定。不计算外部访问,例如 IIS 上的 Web 应用程序。

如果您真的想强制删除它,请检查关闭现有连接选项或尝试手动停止 SQL Server 的服务。

于 2011-02-24T13:40:02.203 回答