2012-06-13 22 views
13

Estoy trabajando en SQL SERVER 2008 & 2008 R2. ¿Cómo puedo cambiar el nombre de una base de datos en modo multiusuario? estoy usando sp_rename pero devuelve este error:Cómo cambiar el nombre de la base de datos en modo multiusuario

Msg 15225, Level 11, State 1, Procedure sp_rename, Line 338

+2

Así que la gente no' Tengo que memorizar qué números de error corresponden a qué mensajes de error, la próxima vez puede incluir el * texto * del mensaje de error y la sintaxis que está utilizando. Estoy seguro de que muchas personas asumieron que 'Msg 15225' era 'La base de datos no se pudo bloquear exclusivamente para realizar la operación. ' –

Respuesta

31

No se puede cambiar el nombre de una base de datos mientras está en uso. O bien esperar a que una ventana de mantenimiento o forzar la base de datos a modo de usuario único (que comenzará a todo el mundo):

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; 
+0

Acabo de intentarlo, puedo cambiar el nombre de db en modo MULTI_USER. –

+2

@VikrantMore es posible que pueda cambiar el nombre de la base de datos mientras está en modo multiusuario, pero * solo * si no hay usuarios conectados. El cambio de nombre se bloquea al requerir el acceso de un solo usuario, no estrictamente debido al modo en el que se encuentra. Obtendrá el error Msg 5030 si intenta cambiar el nombre de una base de datos que está en uso. –

+6

No olvide la barra 'ALTER DATABASE SET MULTI_USER;' – Myster

6

No se puede utilizar para cambiar el nombre sp_rename una base de datos - el SP en cuestión sería sp_renamedb. Sin embargo, lo que está en línea que se quitará en una versión futura de SQL Server y el método preferido es:

ALTER DATABASE dbname MODIFY NAME = newdbname; 

pero no se puede hacer esto de todos modos sin un bloqueo exclusivo en la base de datos.

+0

+1 definitivamente preferido sobre 'sp_renamedb'. –

0

Puede abrir el administrador de configuración del servidor sql y detener e iniciar el servicio, esto funciona para mí con el servidor sql 2008 y 2012 muy bien.

A continuación, cambie el nombre de la base de datos directamente en el estudio de administración del servidor sql.

"funciona para mí"

No es realmente una "advertencia", pero dicen que desea restaurar la misma base de datos exacta, de entrar en las opciones y cambiar el nombre del MDF y LDF

Cuestiones relacionadas