SQL Server告诉我数据库正在使用中,但事实并非如此

时间:2011-02-24 13:01:15

标签: sql-server database-connection database-backups

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

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

它什么都不返回。

有时会返回1个进程,这是一个CHECKPOINT_QUEUE waittype。如果我试图杀死那个进程,它就不会让我(不能杀死非用户进程)。

任何人都知道出了什么问题?

3 个答案:

答案 0 :(得分:30)

我喜欢这个剧本。不要为杀人而挣扎..

use master

alter database xyz set single_user with rollback immediate

restore database xyz ...

alter database xyz set multi_user

答案 1 :(得分:13)

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

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

答案 2 :(得分:10)

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

enter image description here