Cómo forzar la caída de la base de datos en SQL Server 2008

68

Estoy tratando de forzar el descarte de una base de datos, pero después de descartar la base de datos, cuando intento recrear la base de datos, obtengo el error

no se puede crear el archivo C: \ Archivos de programa ..... [databasename] .mdf porque ya existe

Aquí está mi consulta para forzar la caída de la base de datos

Use master;
ALTER database [databasename] set offline with ROLLBACK IMMEDIATE;
DROP database [databasename];

Comprendí que la consulta anterior está eliminando la base de datos, pero no está eliminando los archivos .ldfy .mdf. ¿Cómo dejar caer la base de datos a fondo?

Una consulta normal

Drop database [databasename] ; //deletes the database completely, including the ldf and mdf's.

¿Cómo forzar la caída de una base de datos, que también elimina los archivos .mdfy .ldf?

srk
fuente

Respuestas:

116

Ese es el comportamiento esperado y documentado :

Al soltar una base de datos, se elimina la base de datos de una instancia de SQL Server y se eliminan los archivos de disco físico utilizados por la base de datos. Si la base de datos o cualquiera de sus archivos está fuera de línea cuando se descarta, los archivos del disco no se eliminan. Estos archivos se pueden eliminar manualmente mediante el Explorador de Windows. Para eliminar una base de datos del servidor actual sin eliminar los archivos del sistema de archivos, use sp_detach_db.

Entonces, ¿por qué primero desconecta su base de datos? Simplemente SINGLE_USERconfigúrelo en modo y luego suéltelo como se documenta en los Libros en pantalla de SQL Server.

USE master;
ALTER DATABASE [databasename] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [databasename] ;

Tenga en cuenta que las copias de seguridad de la base de datos no se eliminarán como parte del proceso documentado anteriormente.

marc_s
fuente