2013-04-05 128 views
1

我有一个数据库'我的数据库',我想重命名,以便没有空格。我试着用数据库名称更改SQL失败Sql Server 2008

use master 
exec sp_renamedb 'I 3 SCI Study','I3SciStudy' 

将其重命名,并与错误

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

这个服务器是我的本地机器,我没有其他的查询窗口打开,但在我跑的命名查询窗口迎了上去。在我可以重命名数据库之前,是否需要运行某种紧密连接命令?

+3

请参阅[此问题](http://stackoverflow.com/questions/11014343/how-to-rename-database-in-multi-user-mode)和[这一个](http://stackoverflow.com/questions/525185/sql-server-database-locked)。并注意'sp_renamedb' [已弃用](http://msdn.microsoft.com/zh-cn/library/ms186217.aspx)。 – Pondlife 2013-04-05 17:53:26

+1

尝试将数据库置于单用户模式 – Paparazzi 2013-04-05 18:10:18

+0

您可以停止Sql Server SERVICE(控制面板/管理工具/服务),然后尝试使用它。那肯定会关闭所有连接。 – granadaCoder 2013-04-05 19:41:28

回答

-1

使用SSMS重命名数据库,这样做不应该有任何问题。

+0

这是一个相当全面的解决方案,尽管是一种潜在的解决方法。 – Murkantilism 2013-04-05 20:32:26

0

试试这个命令,但建议谨慎:

USE master; 
ALTER DATABASE [dbname] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 
GO 

ALTER DATABASE [dbname] SET MULTI_USER; 
GO 
0

你也可以询问有关当前活动的锁管理器资源的信息。

SELECT * 
FROM sys.dm_tran_locks DTL 
WHERE DTL.[resource_database_id] = DB_ID() 

每一行都表示当前正在向锁管理器请求已激活的或正在等待被授予的锁。您不仅会看到您对当前数据库的请求(很可能与resoure_type DATABASE有关)。在锁定这些资源的同时更改数据库名称是不可能的