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

tus*_*eau 20 sql-server database-connection database-backups

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

select * from sys.sysprocesses 
where dbid 
  in (select database_id from sys.databases where name = 'NameOfDb')
Run Code Online (Sandbox Code Playgroud)

它什么都不返回.

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

任何人都知道什么是错的?

Mah*_*TAN 31

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

use master

alter database xyz set single_user with rollback immediate

restore database xyz ...

alter database xyz set multi_user
Run Code Online (Sandbox Code Playgroud)


Smu*_*mur 13

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

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


joe*_*oey 12

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

在此输入图像描述

  • “关闭与目标数据库的现有连接”并不总是可用。我不知道为什么 - 根据我的观察,它在我的本地数据库上始终可用简单恢复模式,但如果我从设置为完整恢复模式的服务器恢复备份,则永远不可用。 (3认同)