¿Cómo cambiar el nombre de una base de datos de SQL Server?

A veces tenemos que cambiar el nombre de la base de datos porque el nombre original se basó en el proyecto que se ha vuelto irrelevante para los datos almacenados en la base de datos o le había dado un nombre temporalmente antes y ahora desea modificarlo. Independientemente de las razones detrás del cambio de nombre de la base de datos, en este artículo, encontraremos formas sobre cómo cambiar el nombre de la base de datos, qué error puede surgir al hacerlo y cómo solucionarlo.

Entonces, para cambiar el nombre de la base de datos, debe seguir uno de los métodos que se describen a continuación. En primer lugar, tenemos que crear una base de datos que debe cambiarse de nombre.

Creación de base de datos:

Seleccione cualquier base de datos en su Sistema de administración de SQL Server (SSMS) . Si no tiene ninguno, puede crear uno siguiendo este procedimiento.

  1. Haga clic derecho en " Base de datos " en el "Explorador de objetos" y seleccione la opción "Nueva base de datos"
  2. Aparecerá una ventana en el panel izquierdo.
  3. seleccione el nombre de la base de datos de tipo "General" en el panel derecho y presione "ok" . Se creará la base de datos

Existen varios métodos para cambiar el nombre de una base de datos en SQL Server, que se analizan en detalle a continuación junto con las versiones compatibles con cualquier método específico. Más adelante, también discutiremos los errores que surgen al cambiar el nombre de la base de datos y el procedimiento para corregirlos.

Método 1: uso de la opción de cambio de nombre de SSMS para cambiar el nombre de la base de datos de SQL Server

Esta es la forma más sencilla de cambiar el nombre de una base de datos. Tienes que proceder así para hacerlo.

  1. Haga clic derecho en el nombre de la base de datos desde el explorador de objetos
  2. Seleccione "renombrar" , escriba el nombre de la base de datos y presione "enter"

Método 2: usar SSMS para cambiar el nombre de la base de datos de SQL Server

Otra forma más sencilla de cambiar el nombre de una base de datos es como cambiar el nombre de cualquier carpeta en las ventanas. Tienes que seguir así para hacerlo. Haga clic en la base de datos para cambiarle el nombre, como cambiar el nombre de las carpetas de Windows.

Método 3: usar T-SQL para cambiar el nombre de la base de datos de SQL Server

Para SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 y 2017, este comando funciona. Ejecute la siguiente declaración.

ALTER DATABASE [prueba] MODIFICAR NOMBRE = [test_cases]

El resultado será "Se ha establecido el nombre de la base de datos 'test_cases'". Como se ve en la figura siguiente.

Puede usar el comando T-SQL a continuación para cambiar el nombre de la base de datos si está usando SQL Server 2000. Con SQL 2005, 2008, 2008R2, 2012, 2014, 2016 y 2017, esto todavía funciona, pero en algún momento, Microsoft afirma que se eliminará gradualmente.

Método 4: usar desconectar y adjuntar para cambiar el nombre del servidor SQL

El uso de la función de desconectar y adjuntar de SQL Server se puede utilizar para eliminar la base de datos primero y asignarle un nombre diferente cuando vuelva a adjuntar la base de datos. Los siguientes comandos de T-SQL se pueden utilizar para hacer esto

Desconectando la base de datos ejecutando el siguiente código:

EXEC sp_detach_db 'prueba', 'verdadero'

La salida será así

Adjuntando la base de datos.

EXEC sp_attach_db @dbname = N'test ', @ filename1 = N'C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test.mdf', @ filename2 = N'C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test_log.ldf ';

La salida será:

Usar SSMS para desconectar y volver a conectar bases de datos

Esto también se puede lograr usando SSMS siguiendo estos pasos.

  1. Haga clic con el botón derecho en la base de datos, seleccione "tarea" y luego haga clic en "Separar"
  2. Ahora haga clic en "Aceptar"
  3. Ahora para adjuntar la base de datos, haga clic derecho en "Bases de datos" en "Explorador de objetos" y haga clic en "Adjuntar" . Aparecerá una pantalla, haga clic en Agregar. Aparecerá otra ventana con los nombres de la base de datos, como se muestra a continuación, seleccione "prueba".
  4. Pero queremos agregarlo como nombre de base de datos modificado "casos_prueba", así que escriba "caso_prueba" en el cuadro "Adjuntar como" . Ahora así. Esto cambiará el nombre de su base de datos.

Además, discutiremos los errores que pueden surgir al cambiar el nombre de la base de datos. Necesitará acceso exclusivo a la base de datos para cambiar el nombre de la base de datos, lo que garantiza que la base de datos no tenga otras conexiones de base de datos. Pero si este no es el caso, puede resultar en errores como se muestra a continuación. El error incluso puede surgir cuando abrimos accidentalmente otra ventana con el mismo nombre de base de datos a la que hay que renombrar.

Errores que surgen al cambiar el nombre de la base de datos a través de SSMS y al ejecutar la consulta:

Estos dos errores mencionados a continuación tienen dos vistas diferentes porque surgen al cambiar el nombre de la base de datos utilizando dos métodos diferentes. El error 1 surge al cambiar el nombre de la base de datos usando SSMS y el segundo error surge al cambiar el nombre de la base de datos usando query. Ambos errores muestran el mismo mensaje  "La base de datos no se pudo bloquear exclusivamente para realizar la operación", lo que significa que el error surge porque el usuario no tiene acceso exclusivo a la base de datos para cambiar el nombre de una base de datos. Entonces, para cambiar el nombre de la base de datos, debemos configurar la base de datos en " modo de usuario único ".

Error 1: surge un error al cambiar el nombre de la base de datos a través de SSMS

“No se puede cambiar el nombre de la prueba. (Explorador de objetos)

Información Adicional:

No se pudo cambiar el nombre de la prueba de la base de datos (Microsoft.SqlServer.Smo)

Se produjo una excepción al ejecutar una instrucción Transact-SQL o un lote.

(Microsoft.SqlServer.ConnectionInfo)

La base de datos no se pudo bloquear exclusivamente para realizar la operación. (Microsoft SQL Server, error: 5030) "

Error 2: surge un error al cambiar el nombre de la base de datos mediante una consulta

 "Msg 5030, nivel 16, estado 2, línea 2. La base de datos no se pudo bloquear exclusivamente para realizar la operación".

En primer lugar, reproduciremos los mensajes de error mencionados anteriormente para comprender en qué escenario surgen y cómo solucionarlos.

  1. Haga clic con el botón derecho en el nombre de la base de datos desde el "Explorador de objetos"
  2. Select rename and type database name and press “enter” if it works its fine but if it does not work and results in an error like this “Unable to rename (ObjectExplorer). The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)” as seen in the figure below, then you don’t have exclusive access to the database to rename a database.
  3. This error means that the SQL Server will not allow the database to be renamed until unless it is in “single-user mode”.
  4. So you will need exclusive access to the database to rename a database, to understand this open another query window and select database “test”
  5. Now in the first window try to execute the following code.
  6. ALTER DATABASE [test] MODIFY NAME = [test_cases]
  7. But this will prone to an error message like this: “Msg 5030, Level 16, State 2, Line 2. The database could not be exclusively locked to perform the operation.”

Solution:

This will configure the database to roll back any pending transactions and set it in “single user mode” and then back into “multi-user mode”.

  1. To fix this we need to close all other windows in which the same database name is being used or to set the database in “single user mode” by using the following commands.
  2. Alter database test set single_user with rollback immediate go EXEC sp_renamedb 'test', 'test_cases' go alter database test_cases set multi_user go
  3. The output will be like this: “Nonqualified transactions are being rolled back. Estimated rollback completion: 0%. Nonqualified transactions are being rolled back. Estimated rollback completion: 100%. The database name ‘test_cases’ has been set.”

Conclusion:

These are multiple ways to rename the database. If one way is not working for you. You can go to another one. One thing that should be kept in mind that changing database names using these ways just rename the database. The “physical files” still have the same names. As we can see in the figure below we have changed the database name from “test” to “test_cases” but in the physical location, it remained the same.

Entonces, el enfoque más simple es usar la solución 4 si también desea cambiar el nombre del archivo. Primero debe cambiar el nombre de los archivos físicos antes de volver a adjuntar los archivos y luego especificar los archivos renombrados cuando vuelva a adjuntarlos.

Además, además de cambiar los nombres de las bases de datos, también debe verificar si hay alguna referencia en el código de su aplicación al nombre de la base de datos. Esto puede ser dentro de SQL Server o fuera de SQL Server.