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

68

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, le message d'erreur s'affiche.

ne peut pas 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 le dépôt 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 les fichiers .ldfet .mdf. Comment laisser tomber la base de données à fond?

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 les fichiers .mdfet .ldf?

srk
la source

Réponses:

116

C'est le comportement attendu et 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 la suppression, les fichiers du disque ne sont pas supprimés. Ces fichiers peuvent être supprimés manuellement à l'aide de l'Explorateur Windows. 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 prenez-vous votre base de données hors ligne en premier? Il suffit de le mettre en SINGLE_USERmode, puis de le déposer 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 ne seront pas supprimées dans le cadre du processus décrit ci-dessus.

marc_s
la source