我想重命名一个数据库,但不断得到“无法获得数据库上的排他锁”的错误,这意味着仍有一些连接处于活动状态。

如何杀死数据库的所有连接以便重命名它?


当前回答

我总是用:


ALTER DATABASE DB_NAME SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 
SP_RENAMEDB 'DB_NAME','DB_NAME_NEW'
Go 
ALTER DATABASE DB_NAME_NEW  SET MULTI_USER -- set back to multi user 
GO 

其他回答

在对象资源管理器上的MS SQL Server Management Studio中,右键单击数据库。在下面的上下文菜单中选择“任务->脱机”

我总是用:


ALTER DATABASE DB_NAME SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 
SP_RENAMEDB 'DB_NAME','DB_NAME_NEW'
Go 
ALTER DATABASE DB_NAME_NEW  SET MULTI_USER -- set back to multi user 
GO 

当我试图恢复数据库时,我通常会遇到这种错误,我通常只需要在Management Studio中找到树的顶部,右键单击并重新启动数据库服务器(因为它在开发机器上,这在生产环境中可能不理想)。这将关闭所有数据库连接。

我使用的是SQL Server 2008 R2,我的数据库已经设置为单个用户,并且有一个连接限制了数据库上的任何操作。因此,推荐的SQLMenace解决方案响应错误。这是一个对我有用的方法。

在这种情况下,适合我的选项如下:

在相关数据库上启动“Detach”操作。这将打开一个窗口(在SQL 2005中),显示阻止对DB执行操作的活动连接。 终止活动连接,取消分离操作。 现在应该可以恢复数据库了。