我使用这个查询重命名数据库:
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
但它在执行时显示一个错误:
呼叫5030,16层,状态2,1线 数据库无法被排他锁定以执行该操作。
我的查询有什么问题吗?
我使用这个查询重命名数据库:
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
但它在执行时显示一个错误:
呼叫5030,16层,状态2,1线 数据库无法被排他锁定以执行该操作。
我的查询有什么问题吗?
当前回答
首先尝试关闭数据库的所有连接:
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
从这里开始
其他回答
将数据库设置为single模式: 修改数据库dbName 将single_user设置为立即回滚 尝试重命名数据库: 修改数据库dbName = NewName 设置数据库为多用户模式: ALTER DATABASE NewName 将multi_user设置为立即回滚
您可以尝试将数据库设置为单用户模式。
https://stackoverflow.com/a/11624/2408095
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
将数据库更改为单用户模式,如其他答案所示
有时,即使转换为单用户模式后,可能仍在使用唯一允许连接到数据库的连接。
要关闭连接,即使转换为单用户模式尝试:
select * from master.sys.sysprocesses
where spid>50 -- don't want system sessions
and dbid = DB_ID('BOSEVIKRAM')
查看结果并查看到相关数据库的连接ID。
然后使用下面的命令关闭该连接(应该只有一个连接,因为数据库现在处于单用户模式)
杀死connection_ID
将connection_id替换为第一次查询结果中的ID
1.数据库设置第一个单用户模式
修改数据库bosevikram,设置single_user立即回滚
2.重命名数据库
修改数据库名称= [bosevikram_delete]
3.数据库设置多用户模式
修改数据库回滚立即的多用户
对我来说,我不能重命名数据库的原因是因为有活动连接。 我只是先使数据库脱机,然后勾选“删除所有活动连接”。 然后再次联机,我就可以重命名数据库了。