我使用这个查询重命名数据库:
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
从这里开始
其他回答
关闭所有连接的另一种方法:
管理工具>查看本地服务
停止/启动“SQL Server (MSSQLSERVER)”服务
将数据库更改为单用户模式,如其他答案所示
有时,即使转换为单用户模式后,可能仍在使用唯一允许连接到数据库的连接。
要关闭连接,即使转换为单用户模式尝试:
select * from master.sys.sysprocesses
where spid>50 -- don't want system sessions
and dbid = DB_ID('BOSEVIKRAM')
查看结果并查看到相关数据库的连接ID。
然后使用下面的命令关闭该连接(应该只有一个连接,因为数据库现在处于单用户模式)
杀死connection_ID
将connection_id替换为第一次查询结果中的ID
SQL Server Management Studio (SSMS)中:
你也可以在对象资源管理器中右键单击你的数据库,然后转到属性。从那里,进入选项。向下滚动并将限制访问设置为SINGLE_USER。更改数据库名称,然后返回并将其设置为MULTI_USER。
这对我来说很管用:
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
这是因为其他人正在访问数据库。将数据库设置为单用户模式,然后重命名它。
这个链接可能会有帮助: http://msdn.microsoft.com/en-IN/library/ms345378 (v = sql.105) . aspx
还有: http://msdn.microsoft.com/en-us/library/ms345378.aspx