我想重命名一个数据库,但不断得到“无法获得数据库上的排他锁”的错误,这意味着仍有一些连接处于活动状态。
如何杀死数据库的所有连接以便重命名它?
我想重命名一个数据库,但不断得到“无法获得数据库上的排他锁”的错误,这意味着仍有一些连接处于活动状态。
如何杀死数据库的所有连接以便重命名它?
当前回答
您可以使用SP_Who命令杀死所有使用您的数据库的进程,然后重命名您的数据库。
其他回答
我总是用:
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
您可以使用SP_Who命令杀死所有使用您的数据库的进程,然后重命名您的数据库。
在对象资源管理器上的MS SQL Server Management Studio中,右键单击数据库。在下面的上下文菜单中选择“任务->脱机”
下线需要一段时间,有时我会遇到一些问题。
在我看来最可靠的方法是:
分离 右键单击DB -> Tasks -> Detach… 检查“删除连接” 好吧
重新接上 右键单击数据库->附加.. 添加……->选择您的数据库,并将Attach As列更改为所需的数据库名称。 好吧
Adam建议的方法不起作用的原因是,在循环活动连接的时间内,可以建立新的连接,而您将错过这些连接。你可以使用下面的方法,它没有这个缺点:
-- set your current connection to use master otherwise you might get an error
use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
--do you stuff here
ALTER DATABASE YourDatabase SET MULTI_USER