我正在SQL Server 2008中对我的架构进行主动开发,并经常要重新运行我的drop/create数据库脚本.我跑的时候
USE [master]
GO
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDatabase')
DROP DATABASE [MyDatabase]
GO
Run Code Online (Sandbox Code Playgroud)
我经常遇到这个错误
Msg 3702, Level 16, State 4, Line 3
Cannot drop database "MyDatabase" because it is currently in use.
Run Code Online (Sandbox Code Playgroud)
如果右键单击对象资源管理器窗格中的数据库并从上下文菜单中选择"删除"任务,则会出现一个"关闭现有连接"的复选框
有没有办法在我的脚本中指定此选项?
当我尝试删除或恢复数据库时,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.如果我试图杀死那个进程,它就不会让我(不能杀死非用户进程).
任何人都知道什么是错的?