Vik*_*ore 14 sql-server-2008 sql-server-2008-r2
我正在研究SQL SERVER 2008和2008 R2.如何在多用户模式下重命名数据库?我使用sp_rename但它返回此错误:
Msg 15225,Level 11,State 1,Procedure sp_rename,Line 338
Aar*_*and 33
您无法在数据库正在使用时重命名该数据库.要么等待维护窗口,要么强制数据库进入单用户模式(这将使每个人都出局):
USE [master];
GO
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
--EXEC sys.sp_renamedb @dbname = N'foo', @newname = N'bar';
ALTER DATABASE foo MODIFY NAME = bar; -- preferred way
GO
ALTER DATABASE bar SET MULTI_USER;
Run Code Online (Sandbox Code Playgroud)
您不能使用sp_rename重命名数据库 - 有问题的sp将是sp_renamedb.但是,这在SQL Server的未来版本中将被删除,首选方法是:
ALTER DATABASE dbname MODIFY NAME = newdbname;
Run Code Online (Sandbox Code Playgroud)
但是如果没有对数据库的独占锁定,你无法做到这一点.