我正在使用此查询重命名数据库:
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
但它在排除时显示错误:
Msg 5030,Level 16,State 2,Line 1
无法独占锁定数据库以执行操作。
我的查询有问题吗?
答案 0 :(得分:281)
您可以尝试将数据库设置为单用户模式。
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
答案 1 :(得分:48)
将数据库设置为单一模式:
ALTER DATABASE dbName
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
尝试重命名数据库:
ALTER DATABASE dbName MODIFY NAME = NewName
将数据库设置为多用户模式:
ALTER DATABASE NewName
SET MULTI_USER WITH ROLLBACK IMMEDIATE
答案 2 :(得分:19)
首先尝试关闭与数据库的所有连接:
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
取自here
答案 3 :(得分:18)
您还可以在对象资源管理器中右键单击数据库,然后转到“属性”。从那里转到选项。完全向下滚动并将Restrict Access设置为SINGLE_USER。更改您的数据库名称,然后返回并将其重新设置为MULTI_USER。
答案 4 :(得分:3)
这是因为其他人正在访问数据库。将数据库置于单用户模式,然后重命名。
此链接可以帮助您解决问题: http://msdn.microsoft.com/en-IN/library/ms345378(v=sql.105).aspx 以及此链接: http://msdn.microsoft.com/en-us/library/ms345378.aspx
答案 5 :(得分:3)
这对我有用:
USE [master];
GO
ALTER DATABASE [OldDataBaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_renamedb N'OldDataBaseName', N'NewDataBaseName';
-- Add users again
ALTER DATABASE [NewDataBaseName] SET MULTI_USER
GO
答案 6 :(得分:2)
将数据库更改为单用户模式,如其他答案所示
有时,即使转换为单用户模式,也可以使用允许进入数据库的唯一连接。
即使在转换为单用户模式后关闭连接,请尝试:
select * from master.sys.sysprocesses
where spid>50 -- don't want system sessions
and dbid = DB_ID('BOSEVIKRAM')
查看结果并查看与相关数据库的连接ID。
然后使用以下命令关闭此连接(由于数据库现在处于单用户模式,因此应该只有一个连接)
KILL connection_ID
将connection_id替换为第一个查询结果中的ID
答案 7 :(得分:1)
1.database设置第一单用户模式
ALTER DATABASE BOSEVIKRAM 设置SINGLE_USER并立即回滚
2.RENAME THE DATABASE
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
3.DATABAE SET MULIUSER MODE
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER WITH ROLLBACK IMMEDIATE
答案 8 :(得分:0)
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted'
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
答案 9 :(得分:0)
关闭所有连接的另一种方法:
管理工具>查看本地服务
停止/启动" SQL Server(MSSQLSERVER)"服务