2013-02-15 50 views
0

我需要重新命名我的数据库之一,并试图像这样错误在数据库重命名

ALTER DATABASE Test MODIFY NAME = NewTest 

查询但这会引发错误

Msg 5030, Level 16, State 2, Line 1 
The database could not be exclusively locked to perform the operation. 

任何一个能给我什么建议吗?

+1

使用活动监视器来关闭要重命名的数据库的任何现有连接? – 2013-02-15 04:43:53

回答

2

试着这么做;

USE master 
GO 
ALTER DATABASE Test 
SET SINGLE_USER 
WITH ROLLBACK IMMEDIATE 
GO 
ALTER DATABASE Test MODIFY NAME = NewTest 
GO 
ALTER DATABASE NewTest 
SET MULTI_USER 
GO 

请注意,这可能不会重命名硬盘上的物理文件。

+1

查询为我工作得很好。但我认为你需要改变它一点点ALTER DATABASE测试设置MULTI_USER需要更改为ALTER DATABASE NewTest SET MULTI_USER – Athul 2013-02-15 05:13:15

+0

而且你可以给我任何建议重命名物理文件 – Athul 2013-02-15 05:15:12

+1

很对AKS!发现得好!很高兴它为你工作,但! – PGallagher 2013-02-15 05:15:28

0

有几件事情需要调查。原因你得到这个错误可能是由于一个或多个以下的事情:

  1. 你使用的是不具有运行该命令的权限帐户
  2. 的DB被另一个进程锁定/用户
  3. 数据库包含只读

你可以尝试,并迫使单用户模式来检查文件组2

ALTER DATABASE SINGLE_USER ROLLBACK IMMEDIATE.

这将杀死任何并发连接到数据库,让您排除第二。