我想重命名一个数据库,但不断得到“无法获得数据库上的排他锁”的错误,这意味着仍有一些连接处于活动状态。
如何杀死数据库的所有连接以便重命名它?
我想重命名一个数据库,但不断得到“无法获得数据库上的排他锁”的错误,这意味着仍有一些连接处于活动状态。
如何杀死数据库的所有连接以便重命名它?
当前回答
ALTER DATABASE [Test]
SET OFFLINE WITH ROLLBACK IMMEDIATE
ALTER DATABASE [Test]
SET ONLINE
其他回答
当我试图恢复数据库时,我通常会遇到这种错误,我通常只需要在Management Studio中找到树的顶部,右键单击并重新启动数据库服务器(因为它在开发机器上,这在生产环境中可能不理想)。这将关闭所有数据库连接。
这些对我不起作用(SQL2008 Enterprise),我也看不到任何正在运行的进程或连接到DB的用户。重新启动服务器(右键单击Management Studio中的Sql server并选择重新启动)允许我恢复DB。
我总是用:
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
试试这个:
ALTER DATABASE [DATABASE_NAME]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
另一种“以身作则”的方法是重新启动MSSQLSERVER服务。 我喜欢从命令行做一些事情。把它粘贴到CMD中就可以了: Net stop mssqlserver & Net start mssqlserver
或者开放“服务”。找到“SQL Server (MSSQLSERVER)”,单击右键,选择“restart”。
这将“肯定,肯定”杀死该实例上运行的所有数据库的所有连接。
(比起许多在服务器/数据库上反复更改配置的方法,我更喜欢这种方法)