14

我正在研究 SQL SERVER 2008 和 2008 R2。如何在多用户模式下重命名数据库?我正在使用 sp_rename 但它返回此错误:

消息 15225,级别 11,状态 1,过程 sp_rename,第 338 行

4

3 回答 3

37

您不能在使用数据库时重命名它。要么等待维护窗口,要么强制数据库进入单用户模式(这将把所有人踢出去):

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;
于 2012-06-13T12:05:16.203 回答
7

您不能使用 sp_rename 重命名数据库 - 有问题的 sp 将是 sp_renamedb。但是,这将在 SQL Server 的未来版本中删除,首选方法是:

ALTER DATABASE dbname MODIFY NAME = newdbname;

但是,如果没有数据库上的排他锁,无论如何您都无法做到这一点。

于 2012-06-13T12:07:10.063 回答
0

您可以打开 sql server 配置管理器并停止和启动服务,这对我来说适用于 sql server 2008 和 2012 就好了。

然后在 sql server management studio 中重命名数据库。

“为我工作”

不是真正的“警告”,而是说您想恢复完全相同的数据库,您进入选项并更改 mdf 和 ldf 的名称

于 2013-06-12T06:54:13.013 回答