Every time I reboot windows, for some databases comes out this error. (OS Error 21 — Device not ready)
This is due to a disk being offline or not being online either at the time SQL Server started, or had transitioned states after SQL Server has been online.
3.If I restart SQL Server the errors disappears
Yes, because the databases have been remounted inside of SQL Server. You could also offline->online the database as well and it would work, assuming the disk device has been fixed.
This can easily be reproduced in a test environment by putting a database on a disk, disabling the disk, running a select query (to get the error), bringing the disk back online and noticing that the select still fails with the same error. The database will need to be remounted in order to work again and not get OS Error 21.
What should you do?
Have someone do some windows tracing to figure out why it isn’t coming online initially or why it is going offline (any state transition) or why it is showing ready to windows but really isn’t (maybe other drivers need to be loaded for it).
Additionally check any disk filter drivers are up to date for things like anti-virus, host intrusion protections, etc., as those may also be blocking the service/startup/state.
Every time I reboot windows, for some databases comes out this error. (OS Error 21 — Device not ready)
This is due to a disk being offline or not being online either at the time SQL Server started, or had transitioned states after SQL Server has been online.
3.If I restart SQL Server the errors disappears
Yes, because the databases have been remounted inside of SQL Server. You could also offline->online the database as well and it would work, assuming the disk device has been fixed.
This can easily be reproduced in a test environment by putting a database on a disk, disabling the disk, running a select query (to get the error), bringing the disk back online and noticing that the select still fails with the same error. The database will need to be remounted in order to work again and not get OS Error 21.
What should you do?
Have someone do some windows tracing to figure out why it isn’t coming online initially or why it is going offline (any state transition) or why it is showing ready to windows but really isn’t (maybe other drivers need to be loaded for it).
Additionally check any disk filter drivers are up to date for things like anti-virus, host intrusion protections, etc., as those may also be blocking the service/startup/state.
Каждый раз, когда я перезагружаю Windows, для некоторых баз данных я получаю эту ошибку:
Операционная система вернула ошибку 21 (устройство не готово.)
- Я проверил диск с
chkdsk /r— нет плохих секторов. -
Я выполнил
DBCC CHECKDBбез ошибок:*(CHECKDB found 0 allocation errors and 0 consistency errors in database)* - Если я перезапущу SQL Server, ошибки исчезнут.
Windows 10 и SQL Server 2016 Express.
Ответы:
Каждый раз, когда я перезагружаю Windows, для некоторых баз данных появляется эта ошибка. (Ошибка ОС 21 — устройство не готово)
Это связано с тем, что диск находился в автономном режиме или не был подключен к сети во время запуска SQL Server или имел переходные состояния после подключения SQL Server к сети.
3.При перезапуске SQL Server ошибки исчезают
Да, потому что базы данных были перемонтированы внутри SQL Server. Вы также можете отключить базу данных от сети, и она будет работать, предполагая, что дисковое устройство исправлено.
Это можно легко воспроизвести в тестовой среде, поместив базу данных на диск, отключив диск, выполнив запрос выбора (чтобы получить ошибку), вернув диск обратно в оперативный режим и заметив, что выбор по-прежнему завершается ошибкой с той же ошибкой. База данных должна быть перемонтирована, чтобы снова работать и не получать ошибку 21 ОС.
Что вы должны сделать?
Попросите кого-нибудь выполнить трассировку окон, чтобы выяснить, почему он изначально не подключается к сети или почему он отключается (любой переход состояния) или почему он показывает готовность к окнам, но на самом деле это не так (возможно, для загрузки нужно загрузить другие драйверы). Это).
Кроме того, убедитесь, что все драйверы дисковых фильтров обновлены для таких вещей, как антивирус, защита от вторжения на хост и т. Д., Поскольку они также могут блокировать службу / запуск / состояние.
Это мои наблюдения и то, как я решил проблему (для тех, у кого такая же проблема)
- Я использовал экземпляр amazon ec2 под управлением Sql-сервера.
- У меня было устройство EBS Block, подключенное к экземпляру ec2, которое подключено к диску D :.
- Мои данные и журналы были на диске D :.
- Когда я останавливал экземпляр ec2 и вызывал его позже, я всегда сталкивался с ошибкой «устройство не готово», и базы данных не появлялись.
- Я попытался настроить службу MSSQLSERVER с помощью «Отложенный запуск».
- Однако из журналов сервера sql я обнаружил, что задержка не была учтена, и MSSQLSERVER запустился сразу после загрузки.
- От наблюдателя событий я наблюдал, когда диск D: становится здоровым.
- Из журналов сервера sql я отметил время, когда SQL Server запускает мою пользовательскую базу данных.
- Я заметил, что диск D: доступен только через 6 секунд; и, очевидно, появляется ошибка «Устройство не готово».
- Я также отметил, что «отложенный запуск» не был принят, потому что была другая служба с именем «SQL SERVER LaunchPad», которая запускает «MSSQLSERVER».
- Мне не нужны возможности аналитики «Launchpad». Поэтому я отключил этот сервис.
- Теперь «MSSQLSERVER» запускается с задержкой и может найти файлы диска D :.
Полная ошибка, которую я получил при подключении к локальному экземпляру MS SQL по умолчанию (2017) через MSSMS:
Операционная система возвратила ошибку 21 (устройство не готово) к SQL Server во время чтения со смещением 0x000000000ae000 в файле ‘D: MSSQL DATA tempdev.mdf’. Дополнительные сообщения в журнале ошибок SQL Server и журнале ошибок операционной системы могут предоставить более подробную информацию. Это серьезная ошибка системного уровня, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку согласованности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими факторами; Дополнительные сведения см. в электронной документации по SQL Server. (Microsoft SQL Server, ошибка: 823). Для получения справки нажмите:
http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=823&LinkId=20476
Я начал получать это, как только я переместил свой tempdb на мой новый диск D. Выполнение запуска / остановки службы SQL устраняет ошибку. Никогда не получал эту ошибку, когда все было на C. Оба моих диска SSD и зашифрованы с помощью Bitlocker, не уверен, что это может быть проблемой, может быть, диск C разблокирован очень рано, потому что это нужно операционной системе, а диск D разблокируется позже ,
- Согласно ответу Макса ( https://dba.stackexchange.com/a/175115 ), отключение «Быстрого запуска» решило мою проблему. В соответствии со статьей Макс ссылается на ( https://www.howtogeek.com/243901/the-pros-and-cons-of-windows-10s-fast-startup-mode/ ), довольно трудно найти в Выберите, что делают кнопки питания », а затем« Изменение настроек, которые в данный момент недоступны ».
- В отличие от ответа Venvig ( https://dba.stackexchange.com/a/226115 ), установка для службы «SQL Server» типа запуска = «Автоматический (отложенный запуск)» также позволила решить мою проблему (при повторном запуске Windows’Fast включен).
Я много раз сталкивался с одной и той же проблемой и думал, что должен поделиться своим решением (несмотря на уже предоставленные ответы):
Итак, у меня есть два экземпляра SQL (SQL 2008 и SQL 2017). Ошибка не проявляется в моем экземпляре SQL08, но на SQl17. Это вызвано «учетными данными учетной записи», предоставляемыми во время установки / настройки каждого экземпляра SQL:

Это можно увидеть под Windows Services. SQL08 был настроен на использование «Локальной системной учетной записи», а сбой SQL17 был установлен на «NETWORK ACCOUNT» во время установки. Так что просто измените это и перезапустите службу SQL здесь (или перезапустите экземпляр в браузере SQL).
Вторая часть этой проблемы уникальна для SQL Server 2017 CTP 2.0 при использовании SQL Server Management Studio V17, и в этом случае SMO переключился на использование « sys.dm_os_enumerate_fixed_drives » вместо старого « xp_fixeddrives », чтобы получить информацию о свободном пространстве вашего локального диска. , Чтобы обойти это, перейдите к МЕНЕДЖЕРУ УСТРОЙСТВА и временно отключите указанный привод (в моем случае это был диск «G», который является просто моим приводом DVD-ROM).
Эта проблема меня тоже раздражала. У меня есть 5 дБ, подключенных к моему экземпляру SQL Server, 3 из которых работают нормально, но 2 из которых жалуются
Операционная система возвратила ошибку 21 (устройство не готово) к SQL Server во время чтения со смещением 0x00000000204000 в файле ‘E: xxxxxxxx.mdf’
Вот мое решение.
- Включите Services.msc , найдите службу с именем SQL Server (имя экземпляра) , щелкните правой кнопкой мыши и перезапустите ее.
- Вернитесь к ssms, обновите свою базу данных, и все должно работать.
С другой стороны, я попробовал использовать автономный / онлайн-метод. Это не сработало в моем случае. Brute force перезапускает службу sqlserver. это может быть проблемой для тех, чья ставка на отключение всех баз данных слишком высока. Однако, если вы просто делаете локальное развитие, как я, тогда это решение должно подойти.
Внимание! Прежде чем следовать нижеприведенной инструкциии обязательно сделайте резервную копию Вашей информационной базы 1С. Как это сделать вы можете узнать из нашей статьи: «Создание резервной копии базы данных 1С».
Часто при работе в программах 1С Предприятие можно столкнуться с ошибками базы данных (ошибками СУБД). И так же часто их можно решить простой проверкой физической целостности фала базы данных 1С. Именно с этой целью вместе с программой 1С на ваш компьютер устанавливается утилита под названием chdbfl.exe.
Проверка физической целостности файла базы данных 1С может помочь, если возникли ошибки СУБД: «Файл базы данных поврежден», «Внутренняя ошибка компоненты dbeng8» и многие другие.
Предлагаем вам посмотреть видеоинструкцию по тестированию и исправлению информационной базы 1С с помощью утилиты chdbfl.exe. Либо прочитать о том, как это сделать ниже.
Как исправить ошибки СУБД в 1С с помощью утилиты chdbfl.exe?
1. Для начала сделайте резервную копию вашей информационной базы.
2. Найдите и запустите утилиту chdbfl.exe. Обычно она располагается по следующему пути или похожему:
C:Program Files1cv8[самый последний номер платформы, если их несколько]binchdbfl.exe.
В общем случае пройдите по следующему пути: откройте «Мой компьютер» → Далее откройте диск, на который была установлена 1С (обычно это диск под буквой «C») → Потом найдите папку «Program FIles» (или «Program Files (x86)», если она есть) → Следующим шагом откройте папку «1cv8» (если у вас установлена 1С 8.3) или «1cv82» (если установлена 1С 8.2) → Далее вы увидите одну или несколько папок, названных номерами — это номера релизов платформы 1С, если их несколько выбирайте папку с самым последним (большим) номером → Теперь откройте папку «bin» → И уже в ней найдите и откройте файл с названием «chdbfl.exe».
3. Открыв утилиту, нужно указать ей, какой файл базы данных ей нужно исправлять. Чтобы узнать где этот файл располагается, запустите 1С, в окне запуска выберите нужную информационную базу, в том же окне запуска нажмите «Изменить». В открывшемся окошке строка «Каталог информационной базы» — это путь к папке, где лежит файл базы данных. Пройдя по этому пути в утилите, укажите файл базы данных — это будет файл с расширением «.1CD».
4. Проставьте галочку во флажке «Исправлять обнаруженные ошибки».
5. Нажмите кнопку «Выполнить» и дождитесь окончания проверки и исправления.

Также вы можете узнать о других способах устранения ошибок 1С из нашей статьи «Как исправить ошибки 1С».