[How-To] SQL Server | Cómo Eliminar todas las Bases de Datos de una Instancia

En algunas ocasiones necesitamos borrar TODAS las bases de datos de una instancia de SQL Server, ya sea porque estamos en un laboratorio o porque necesitamos cambiar la Collation de la Instancia y no podemos hacerlo si tenemos bases de datos.

Este script permite generar una salida de texto que tendrá, por cada base de datos, dos líneas de scripts que nos permitirá eliminarlas en forma masiva.

Esta publicación es de utilidad tanto para IT Pros como para Devs, dado que su uso es simple y sencillo. ¡Vamos a conocerlo más en detalle!

 

[toc]

Introducción

Objetivo

Esta publicación tiene como objetivo demostrar a los Administradores de IT y Base de Datos cómo realizar una eliminación de todas las bases de datos de una instancia de Microsoft SQL Server a través de un script dinámico que identifique todas las bases de datos presentes en el servidor y las borre.

Audiencia

Este documento está dirigido a Consultores, Profesionales IT y personas que desarrollan tareas de Consultoría, Administración y Soporte o que simplemente están interesados en leer e investigar sobre la tecnología alcanzada por esta publicación.

Comentarios y Corrección de Errores

Hemos realizado nuestro mejor esfuerzo para no cometer errores, pero al fin y al cabo somos seres humanos. Si deseás reportar algún error o darnos feedback de qué te pareció esta publicación, por favor no dejes de comunicarte con nosotros a través de correo electrónico a la siguiente dirección: info@tectimes.net.

Alcance Técnico

Entender cuál es el alcance de la publicación nos ayuda a tener una expectativa real de lo que encontraremos en la misma, de modo tal que quién lo lee no espere ni más ni menos de lo que encontrará. Vamos a describir el objetivo técnico, tecnologías alcanzadas, escenario de trabajo y plan de trabajo en alto nivel.

Objetivo Técnico

El objetivo técnico de este tutorial es demostrar en forma práctica cómo eliminar todas las bases de datos de una instancia de Microsoft SQL Server 2014 a través de un script dinámico que identifique todas las bases de datos presentes en el servidor y las borre. Este script dinámico deberá tomar cada base de datos con acceso “exlusivo” y luego borrarla. Una vez borradas, podremos (por ejemplo) cambiar la Intercalación (Collation) de la instancia.

Tecnologías Alcanzadas

Las tecnologías alcanzadas por esta publicación son las siguientes:

  • SQL Server 2005 y superior.
  • Lenguaje SQL.

Escenario de Trabajo

El escenario de trabajo que da marco a esta publicación es el siguiente:

  • SQL Server 2014 instalado en una instancia llamada “MSSQLSERVER”.
  • SQL Management Studio.

Plan de Trabajo

El plan de trabajo a desarrollar en esta publicación es el siguiente:

  • Descripció y Análisis de la situación incial.
  • Preparación del Script de Borrado de base de datos.
  • Ejecución del Script de Borrado de base de datos.

Desarrollo

Vamos a iniciar los pasos necesarios para borrar dinámicamente bases de datos (todas) de una instancia de SQL Server 2014 (si bien puede aplicarse desde SQL Server 2005). ¡Manos a la obra!

Descripción de Situación

La situación inicial es una instancia de SQL Server que tiene una Intercalación (Collation) seleccionada que es errónea para el software que estamos instando. Por este motivo, queremos cambiar la Intercalación (Collation) sin reinstalar la instancia del servidor.

Por este motivo vamos a identificar las bases de datos presentes, eliminarlas de una manera automática, y luego proceder a cambiar la Collation. Las bases que hoy tenemos en esta instancia son las siguientes:


Ilustración 1 – Base de Datos de SQL Server presentes en la instancia.
Ilustración 1 – Base de Datos de SQL Server presentes en la instancia.

 

Vamos a generar el procedimiento necesario para hacerlo ágilmente.

Preparación del Script de Borrado

Lo primero que debemos hacer es preparar el script. Dado que no queremos tipear a mano cada base de datos y ejecutar el comando para eliminarlas, vamos a utilizar el Script Panel de SQL Server para que nos genere dinámicamente el comando de borrado para cada base:

 

Ilustración 2 – Script de SQL Server que genera la salida necesaria para eliminar todas las bases de datos de la instancia.
Ilustración 2 – Script de SQL Server que genera la salida necesaria para eliminar todas las bases de datos de la instancia.

Vamos a ejecutar el siguiente script de SQL Server desde el Panel de Scripts:

 

EXEC sp_MSforeachdb '
IF DB_ID(''?'') > 4
BEGIN
PRINT (''
ALTER DATABASE [?] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE [?]'')
END
'

 

Esto tendrá el siguiente resultado:

 

Ilustración 3– Ejecución del Script de SQL Server que genera la salida necesaria para eliminar todas las bases de datos de la instancia.
Ilustración 3– Ejecución del Script de SQL Server que genera la salida necesaria para eliminar todas las bases de datos de la instancia.

 

El texto que tenemos en la salida del script es el que vamos a reutilizar para poder eliminar TODAS las bases de datos de la instancia.

Ejecución del Script de Borrado

Copiamos y pegamos el texto resultante, y pegamos el mismo en otro panel de script. Nótese que cada línea contiene las siguientes partes:

  • ALTER DATABASE [nombre de base de datos] SET SINGLE_USER WITH ROLLBACK INMEDIATE: este segmento pone la base de datos en modo “Single User” para evitar que otro usuario o proceso lo bloquee.
  • -DROP DATABASE [nombre de base de datos]: este segmento elimina la base de datos.

 

El script automático que generamos nos permite que por cada base de datos se generen estos dos comandos, por lo cual lo único que tenemos que hacer es ejecutarlo y aguardar el resultado:

 

Ilustración 4 – Ejecución del Script que elimina todas las bases de datos de la instancia SQL Server.
Ilustración 4 – Ejecución del Script que elimina todas las bases de datos de la instancia SQL Server.

 

Una vez ejecutado el script el resultado se debería ver reflejado en el panel de resultados:

 

Ilustración 5 – Ejecución del Script que elimina todas las bases de datos de la instancia SQL Server.
Ilustración 5 – Ejecución del Script que elimina todas las bases de datos de la instancia SQL Server.

 

Luego de actualizar el estado de base de datos, notamos que ya no hay base de datos existentes en la instancia:

 

Ilustración 6 – Borrado de Base de Datos SQL Server luego de la ejecución del script.
Ilustración 6 – Borrado de Base de Datos SQL Server luego de la ejecución del script.

 

¡Trabajo terminado! Ya podemos cambiar la Intercalación (Collation) de la instancia en la que estamos trabajando. Pero esta tarea será para otra publicación. ¡Nos leemos!

Conclusiones

Hemos demostrado cómo podemos generar dinámicamente un script en SQL Server y utilizarlo para poder borrar todas las bases de datos presentes en una instancia de Microsoft SQL Server.

Este script es muy útil, tanto para Administradores de IT como para Administradores de Bases de Datos, para poder ágilmente despejar y dejar limpia una Instancia del Motor en vez de eliminarla y reinstalarla.

Esperamos que el script les haya resultado de interés, dejamos todos los links al mismo (gallería de Microsoft) en las “Referencias y Links” y estamos en contacto a través de los comentarios. ¡Saludos!

Referencias y Links

 

Acerca del Autor

0 0 votes
Article Rating

Professor. Techie. Ice cream fan (dulce de leche). My favorite phrase: "Todos los días pueden no ser buenos ... pero hay algo bueno en todos los días". Currently I´m Engineering Manager at MODO (https://modo.com.ar), the payment solution that allows you to connect your money and your world to simplify everyday life. Modo is a payment solution in which you can send, order and pay from your mobile device in the safest, most practical and convenient way. I enjoy a lot of educational, technological talks and a good beer. If you want to talk, write me to pablodiloreto@hotmail.com.

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments