So erzwingen Sie das Löschen einer Datenbank in SQL Server 2008

68

Ich versuche, das Löschen einer Datenbank zu erzwingen, aber nach dem Löschen der Datenbank erhalte ich den Fehler, wenn ich versuche, die Datenbank neu zu erstellen

Datei C: \ Programme ..... [Datenbankname] .mdf kann nicht erstellt werden, da sie bereits vorhanden ist

Hier ist meine Abfrage, um das Löschen der Datenbank zu erzwingen

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

Ich habe verstanden, dass die obige Abfrage die Datenbank löscht, aber nicht die .ldfund .mdf-Dateien löscht . Wie lösche ich die Datenbank gründlich?

Eine normale Abfrage

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

Wie erzwinge ich das Löschen einer Datenbank, wodurch auch die Dateien .mdfund .ldfgelöscht werden?

srk
quelle

Antworten:

116

Das ist erwartetes und dokumentiertes Verhalten :

Durch das Löschen einer Datenbank wird die Datenbank aus einer Instanz von SQL Server und die von der Datenbank verwendeten physischen Festplattendateien gelöscht. Wenn die Datenbank oder eine ihrer Dateien beim Löschen offline ist, werden die Festplattendateien nicht gelöscht. Diese Dateien können manuell mit dem Windows Explorer gelöscht werden. Verwenden Sie sp_detach_db, um eine Datenbank vom aktuellen Server zu entfernen, ohne die Dateien aus dem Dateisystem zu löschen.

Warum schalten Sie Ihre Datenbank also zuerst offline? Setzen Sie es einfach in den SINGLE_USERModus und legen Sie es ab, wie in der SQL Server-Onlinedokumentation beschrieben.

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

Beachten Sie, dass Datenbanksicherungen im Rahmen des oben beschriebenen Prozesses nicht gelöscht werden.

marc_s
quelle