ファイル 'E:\ SQL Database\S ***** d\NewAdvWorks.mdf'のオフセット0x0000000001c000での読み取り中に、オペレーティングシステムがエラー21(デバイスの準備ができていません。)をSQL Serverに返しました。 SQL Serverエラーログとシステムイベントログに追加のメッセージが表示される場合があります。これは、データベースの整合性を脅かす深刻なシステムレベルのエラー状態であり、すぐに修正する必要があります。完全なデータベース整合性チェック(DBCC CHECKDB)を実行します。このエラーは多くの要因によって引き起こされる可能性があります。詳細については、SQL Server Books Onlineを参照してください。
私のために働いたもの:
alter database [database_name] set offline
...数秒待ちます...
alter database [database_name] set online
SQL Serverを再起動すると、(アクセスできないデータベースだけでなく)すべてのデータベースがオフラインになるため、SQL Serverを再起動するよりも優れています。
今日も同じエラーが発生しました。 SQL Serverサービスを再起動すると修正されました。
SQL ServerエラーログとWindowsイベントログに同じエラーが表示されました。
ファイル 'blah.mdf'のオフセット0x00000000026000での読み取り中に、オペレーティングシステムがエラー21(デバイスの準備ができていません。)をSQL Serverに返しました。 SQL Serverエラーログとシステムイベントログに追加のメッセージが表示される場合があります。これは、データベースの整合性を脅かす深刻なシステムレベルのエラー状態であり、すぐに修正する必要があります。完全なデータベース整合性チェック(DBCC CHECKDB)を実行します。このエラーは多くの要因によって引き起こされる可能性があります。詳細については、SQL Server Books Onlineを参照してください。
そして:
エラー:823、重大度:24、状態:2
Robert van den Bergの回答を読んだ後、データベースをオフラインにしてから、オンラインにしておく必要がある他のデータベースがある場合は、最初にオンラインにしてみます。
まず、エラーメッセージに示されたログを読みます。
次に、サーバーをリセットしてから、DBCC CheckDB
再び。
私の場合、使用することができました
_exec sp_detach_db [dbName];
_
に続く
_exec sp_attach_db [dbName] , @filename1 = N'U:\mdf\dbName.mdf' , @filename2 = N'G:\ldf\dbName_log.ldf';
_
sQL 2017で30データベースの場合。「デタッチ」プロセスでエラーがスローされたにもかかわらず、SQLはデータベースをデタッチしました。
デタッチを開始する前にselect db_name(database_id), * from sys.master_files
を使用したので、この状態のデータベースが30個ある場合は、アタッチプロセスをスクリプトで実行できました。
私の場合、触媒を見つけました。私は前夜に2巻を「拡張」しました。 Disk Managementは、その時点ではボリュームを拡張できないと報告していました。メンテナンスウィンドウが再試行されるのを待つことにしましたが、まだエラーはありませんでした。
5時間後、VSSを使用するバックアップが開始されました。失敗した「ボリュームの拡張」とVSSスナップショットの組み合わせにより、ボリュームが異常な状態になったと思います。