在SQL Server 2008 R2中重命名数据库时出错
我正在使用此查询来重命名数据库:
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
但是在排除时显示错误:
消息5030,级别16,状态2,行1
数据库不能独占locking来执行操作。
我的查询有什么不对吗?
您可以尝试将数据库设置为单用户模式。
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
-
将数据库设置为单一模式:
ALTER DATABASE dbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
-
尝试重命名数据库:
ALTER DATABASE dbName MODIFY NAME = NewName
-
将数据库设置为多用户模式:
ALTER DATABASE NewName SET MULTI_USER WITH ROLLBACK IMMEDIATE
尝试先closures与数据库的所有连接:
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
从这里采取
您也可以在对象资源pipe理器中右键单击您的数据库并转到属性。 从那里去选项。 向下滚动并将“限制访问”设置为“SINGLE_USER”。 更改您的数据库名称,然后返回并将其设置回MULTI_USER。
那是因为别人正在访问数据库。将数据库置于单用户模式,然后重命名它。
此链接可能会帮助您解决问题: http : //msdn.microsoft.com/en-IN/library/ms345378(v=sql.105).aspx以及此链接: http : //msdn.microsoft.com /en-us/library/ms345378.aspx
将数据库更改为单用户模式,如其他答案所示
有时甚至在转换到单用户模式之后,唯一允许连接到数据库的连接可能正在使用中。
即使在转换到单用户模式后closures连接尝试:
select * from master.sys.sysprocesses where spid>50 -- don't want system sessions and dbid = DB_ID('BOSEVIKRAM')
查看结果并查看与有问题的数据库的连接的ID。
然后使用下面的命令closures这个连接(应该只有一个,因为数据库现在处于单用户模式)
KILL connection_ID
用第一个查询结果中的IDreplaceconnection_id
这对我来说是这样的:
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
1.数据库设置第一单用户模式
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
重命名数据库
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
3.DATABAE SET MULIUSER模式
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER WITH ROLLBACK IMMEDIATE
use master ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted' ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
closures所有连接的另一种方法是:
pipe理工具>查看本地服务
停止/启动“SQL Server(MSSQLSERVER)”服务