2016-07-23 2 views
3

У меня была база данных SQL Server на внешнем жестком диске. Я забыл отсоединить БД. Мне это больше не нужно, но я не могу удалить или отключить его.Ошибка 21 при попытке удалить базу данных SQL Server

Когда я пытаюсь удалить или отключить БД в автономном режиме, я получаю следующую ошибку.

Msg 823, Level 24, состояние 2, строка 7

Операционная система вернула ошибка 21 (Устройство не готово.) К SQL Server во время чтения в смещение 0x00000000012000 в файле «E : \ Kenya Air \ Monet - Paulus.mdf '. Дополнительные сообщения в журнале ошибок SQL Server и системном журнале событий могут содержать более подробную информацию. Это серьезное системное условие ошибки , которое угрожает целостности базы данных и должно быть исправлено немедленно. Завершите полную проверку целостности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими факторами; для получения дополнительной информации см. SQL Server Электронная книга.

Я попытался выполнить команду DBCC CHECK, но я получаю ту же ошибку.

+0

Вы пробовали в SQL Management Studio, щелкните правой кнопкой мыши по базе данных, выберите «Задачи», затем «Отсоединить»? – gofr1

ответ

1

Попробуйте использовать базу данных в автономном режиме, а затем онлайн.

Alter database DatabaseName set offline 

Затем вернуть его обратно онлайн через некоторое время

Alter database DatabaseName set online 
+0

Привет, как уже упоминалось ... Как только я выполняю код, чтобы отключить БД, я получаю ту же ошибку. –

+0

@PaulusViljoen Можете ли вы запустить «DBCC Checkdb with all_errormsgs, no_infomsgs» И дайте мне знать, какая у вас ошибка. –

+0

@PaulusViljoen запустите этот «exec xp_fixeddrives», чтобы увидеть, показаны ли все диски. –

0

Я бы попробовал систему хранимой процедуры sp_detach_db в SQL. От fine manual:

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

ОС сообщает точно, что вы сказали в своем вопросе: при удалении базы данных SQL Server пытается удалить файл с устройства, которое больше не существует. Таким образом, база данных не может быть «удалена» по определению. Но, возможно, его можно отделить, поскольку это влияет только на внутреннее определение системы списка доступных баз данных.

+0

Привет, Я все равно получаю ту же ошибку при выполнении sp_detach_db. –

0

НЕ пытайтесь установить базу данных в автономный и обратно онлайн - это в конечном итоге сделать еще хуже.
Остановить SQL Server - переместить соответствующие файлы базы данных (данные и файлы журналов) в другое место. Запустите SQL Server снова - в конечном итоге БД укажет (ожидание восстановления) - теперь удалите БД с SQL-сервера. Затем присоедините файлы базы данных к серверу, и вы должны быть в порядке - если файлы не повреждены физически. Я неоднократно видел эту проблему - особенно в виртуализированных экземплярах SQL, где SQL-сервер настроен на автозапуск и не был отключен координированным образом перед перезагрузкой системы. Эта проблема может возникнуть из-за кратковременной проблемы подключения к файлу данных или журнала. Если ваша система показывает эту проблему более чем один раз, установите SQL-сервер для запуска вручную.

Смежные вопросы