Como renombrar una base de datos en SQL Server

Algo que parece tan trivial como renombrar una base de datos, puede volverse una tarea ardua y complicada en SQL Server.

La primera opción que se suele elegir es ir directamente con el Management Studio (o el Administrador Corporativo) y elegir la opción Renombrar sobre la base de datos. Esta operación dispara una excepción que viene a decir que la base de datos podría no estar bloqueada de forma exclusiva para ejecutar dicha operación.

Otra opción podría ser usar el procedimiento almacenado sp_rename_db:

sp_rename_db nombre_anterior, nombre_nuevo

Dicho procedimiento almacenado se presenta como obsoleto para SQL Server 2005 o superiores, recomendando utilizar alter database de esta forma:

alter database nombre_anterior modify name = nombre_nuevo

Pero nos lanza una excepción similar al paso anterior. La respuesta a este problema consiste en echar a todos los usuarios que puedan estar accediendo a la BD y mantenerles desconectados lo suficiente como para hacer el cambio. Esta operación puede ser muy farragosa, ya que habría que recorrer los pids de sistema y matarlos uno a uno. En un sistema que está muy cargado, simplemente basta con desconectar el cable de red. SQL  nos ofrece una solución que consiste en añadir la opción ROLLBACK IMMEDIATE a la sentencia alter, pero tampoco funciona en la operación de renombrado.

Finalmente, lo que hemos de hacer es una operación consistente en varios pasos:

alter database nombre_anterior set single_user with rollback immediate

alter database nombre_anterior modify name=nuevo_nombre

alter database nuevo_nombre set multi_user

* Traducción libre de un artículo publicado en SQLServerCentral por Andy Warren:

http://www.sqlservercentral.com/articles/Administration/63891/

Deja una respuesta