web-dev-qa-db-fra.com

Comment forcer la suppression de la base de données dans SQL Server 2008

J'essaie de forcer la suppression d'une base de données, mais après avoir supprimé la base de données, lorsque j'essaie de recréer la base de données, j'obtiens l'erreur

impossible de créer le fichier C:\Program Files ..... [nom de la base de données] .mdf car il existe déjà

Voici ma requête pour forcer la suppression de la base de données

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

J'ai compris que la requête ci-dessus supprime la base de données, mais ne supprime pas le .ldf et .mdf des dossiers. Comment supprimer complètement la base de données?

Une requête normale

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

Comment forcer la suppression d'une base de données, qui supprime également le .mdf et .ldf des dossiers?

69
srk

Cela est attendu et comportement documenté :

La suppression d'une base de données supprime la base de données d'une instance de SQL Server et supprime les fichiers de disque physique utilisés par la base de données. Si la base de données ou l'un de ses fichiers est hors ligne lors de sa suppression, les fichiers disque ne sont pas supprimés. Ces fichiers peuvent être supprimés manuellement à l'aide de Windows Explorateur. Pour supprimer une base de données du serveur actuel sans supprimer les fichiers du système de fichiers, utilisez sp_detach_db.

Alors, pourquoi mettez-vous d'abord votre base de données hors ligne? Réglez-le simplement sur SINGLE_USER mode, puis déposez-le comme indiqué dans la documentation en ligne de SQL Server.

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

Remarque: les sauvegardes de base de données seront pas supprimées dans le cadre du processus documenté ci-dessus.

119
marc_s