DBCC CheckDB Операционная система вернула ошибку 21 (Устройство не готово.)

DBCC CheckDB Операционная система вернула ошибку 21 (Устройство не готово.)

Операционная система вернула ошибку 21 (Устройство не готово.) SQL Server во время чтения по смещению 0x0000000001c000 в файле 'E:\SQL Database\S*****d\NewAdvWorks.mdf'. Дополнительные сообщения в журнале ошибок SQL Server и журнале системных событий могут предоставить более подробную информацию. Это серьезная ошибка системного уровня, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку согласованности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими факторами; для получения дополнительной информации см. SQL Server Books Online.

решение1

Что мне помогло:

alter database [database_name] set offline

...подождите несколько секунд...

alter database [database_name] set online 

Это лучше, чем перезапуск SQL Server, поскольку перезапуск SQL Server переводит все базы данных в автономный режим (а не только ту, которая недоступна).

решение2

Я столкнулся с этой же ошибкой сегодня. Перезапуск службы SQL Server исправил ее.

Журнал ошибок SQL Server и журнал событий Windows показали одну и ту же ошибку:

Операционная система вернула ошибку 21 (Устройство не готово.) SQL Server во время чтения по смещению 0x00000000026000 в файле 'blah.mdf'. Дополнительные сообщения в журнале ошибок SQL Server и журнале системных событий могут предоставить более подробную информацию. Это серьезная ошибка системного уровня, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку согласованности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими факторами; для получения дополнительной информации см. SQL Server Books Online.

И:

Ошибка: 823, Серьезность: 24, Состояние: 2

Прочитав ответ Роберта ван ден Берга, я бы попробовал сначала перевести базу данных в автономный режим, а затем перевести ее в онлайн-режим, если у вас есть другие базы данных, которые необходимо хранить в сети.

решение3

Сначала прочитайте логи, указанные в сообщении об ошибке.

Затем попробуйте перезагрузить сервер и DBCC CheckDBснова запустить.

решение4

В моем случае я смог использовать

exec sp_detach_db [dbName];

с последующим

exec sp_attach_db [dbName] , @filename1 = N'U:\mdf\dbName.mdf' , @filename2 = N'G:\ldf\dbName_log.ldf';

для 30 баз данных в SQL 2017. Несмотря на то, что процесс «отсоединения» выдал ошибку, SQL отсоединил базу данных.

Я использовал его select db_name(database_id), * from sys.master_files до того, как начал отсоединяться, чтобы иметь возможность записать процесс присоединения, учитывая, что у меня было 30 баз данных в этом состоянии.

Я нашел катализатор в своем случае. Я «расширил» два тома накануне вечером. Управление дисками сообщило, что в то время не смогло расширить том. Я решил дождаться окна обслуживания, чтобы попробовать еще раз, и пока никаких ошибок не было.

Пять часов спустя началось резервное копирование, которое использовало VSS. Я убежден, что сочетание неудачного «расширения тома» и моментального снимка VSS привело тома в необычное состояние.

Связанный контент