The operating system returned error 21 (The device is not ready.) Every time I reboot Windows, for some databases I get this error:


  The operating system returned error 21(The device is not ready.)



I checked the disk with chkdsk /r - no bad sectors.
I executed DBCC CHECKDB with no errors: 

*(CHECKDB found 0 allocation errors and 0 consistency errors in database)* 

If I restart SQL Server the errors disappear.


Windows 10 and SQL Server 2016 Express.
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.