Как принудительно удалить базу данных в SQL Server 2008

68

Я пытаюсь принудительно удалить базу данных, но после удаления базы данных, когда я пытаюсь воссоздать базу данных, я получаю сообщение об ошибке

невозможно создать файл 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файлы?

SRK
источник

Ответы:

116

Это ожидаемое и документированное поведение :

Удаление базы данных удаляет базу данных из экземпляра SQL Server и удаляет файлы физического диска, используемые базой данных. Если база данных или какой-либо из ее файлов находятся в автономном режиме при удалении, файлы на диске не удаляются. Эти файлы можно удалить вручную с помощью проводника Windows. Чтобы удалить базу данных с текущего сервера, не удаляя файлы из файловой системы, используйте sp_detach_db.

Так почему же вы сначала отключаете свою базу данных? Просто установите его в SINGLE_USERрежим, а затем отбросьте, как описано в электронной документации по SQL Server.

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

Обратите внимание, что резервные копии базы данных не будут удалены как часть процесса, описанного выше.

marc_s
источник