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


68

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

ファイルC:\ Program Files ..... [databasename] .mdfは既に存在するため作成できません

データベースを強制的に削除するためのクエリを次に示します

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

上記のクエリはデータベースを削除し.ldfてい.mdfますが、and ファイルを削除するわけではないことを理解しました。データベースを徹底的に削除する方法は?

通常のクエリ

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

データベースを強制的に削除する方法は、データベース.mdf.ldfファイルも削除しますか?

回答:


116

それは予想され、文書化された動作です:

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

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

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

上記のプロセスの一部として、データベースのバックアップは削除されないことに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.