Como forçar a queda do banco de dados no SQL Server 2008

68

Estou tentando forçar a queda de um banco de dados, mas depois de soltar o banco de dados, quando tento recriar o banco de dados, estou recebendo o erro

não pode criar o arquivo C: \ Arquivos de Programas ..... [nome do banco de dados] .mdf porque ele já existe

Aqui está minha consulta para forçar a queda do banco de dados

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

Entendi que, a consulta acima está descartando o banco de dados, mas não está excluindo os arquivos .ldfe .mdf. Como descartar o banco de dados completamente?

Uma consulta normal

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

Como forçar a eliminação de um banco de dados, que também exclui os arquivos .mdfe .ldf?

srk
fonte

Respostas:

116

Esse é o comportamento esperado e documentado :

A eliminação de um banco de dados exclui o banco de dados de uma instância do SQL Server e os arquivos de disco físico usados ​​pelo banco de dados. Se o banco de dados ou qualquer um de seus arquivos estiver offline quando for descartado, os arquivos do disco não serão excluídos. Esses arquivos podem ser excluídos manualmente usando o Windows Explorer. Para remover um banco de dados do servidor atual sem excluir os arquivos do sistema de arquivos, use sp_detach_db.

Então, por que você está colocando seu banco de dados offline primeiro? Basta configurá-lo no SINGLE_USERmodo e soltá-lo conforme documentado nos Manuais Online do SQL Server.

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

Observe que os backups do banco de dados não serão excluídos como parte do processo documentado acima.

marc_s
fonte