脚本来关闭到数据库的所有连接(超过限制_USER回滚)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

我有一个开发数据库,它经常从VisualStudio数据库项目(通过TFS自动构建)重新部署。

有时候,当我运行我的构建时,我会得到以下错误:

由于无法对数据库“MyDB”放置锁,ALTERDATABASE失败。以后再试。 ALTERDATABASE语句失败。 无法删除数据库“MyDB”,因为它目前正在使用中。undefined

我试过这个:

ALTER DATABASE MyDB SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE

但我还是不能删除数据库。(我猜大多数开发人员都有DBO访问权限。)

我可以手动运行SP_我需要一个自动的方法在自动构建中实现这一点。(尽管这一次我的连接是我试图删除的db上唯一的连接。)

是否有一个脚本可以删除我的数据库,而不管连接的是谁?

提问于
用户回答回答于

用于MSSQLServer 2012及以上

USE [master];

DECLARE @kill varchar(8000) = '';  
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';'  
FROM sys.dm_exec_sessions
WHERE database_id  = db_id('MyDB')

EXEC(@kill);

对于MSSQLServer 2000,2005,2008

USE master;

DECLARE @kill varchar(8000); SET @kill = '';  
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), spid) + ';'  
FROM master..sysprocesses  
WHERE dbid = db_id('MyDB')

EXEC(@kill); 
用户回答回答于
USE master
GO
ALTER DATABASE database_name
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO

扫码关注云+社区