web-dev-qa-db-ja.com

SQL Server 2008でデータベースを強制的に削除する方法

データベースを強制的に削除しようとしていますが、データベースを削除した後、データベースを再作成しようとすると、エラーが発生します。

ファイルC:\ Program Files ..... [データベース名] .mdfはすでに存在するため作成できません

これはデータベースを強制的に削除するためのクエリです

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

上記のクエリはデータベースを削除していますが、.ldfファイルと.mdfファイルは削除されていません。データベースを完全に削除する方法は?

通常のクエリ

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

.mdfおよび.ldfファイルも削除するデータベースを強制的に削除する方法

69
srk

それは予想されており、 documentedbehavior

データベースを削除すると、SQL Serverのインスタンスからデータベースが削除され、データベースで使用されている物理ディスクファイルが削除されます。 データベースまたはそのファイルの1つが削除されたときにオフラインの場合、ディスクファイルは削除されません。これらのファイルは、Windowsを使用して手動で削除できます冒険者。ファイルシステムからファイルを削除せずに現在のサーバーからデータベースを削除するには、sp_detach_dbを使用します。

では、なぜ最初にデータベースをオフラインにするのですか? SINGLE_USERモードに設定し、SQL Server Books Onlineに記載されているようにドロップするだけです。-

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

上記のプロセスの一環として、データベースのバックアップは削除されません。

119
marc_s