web-dev-qa-db-ja.com

DBCC CheckDBオペレーティングシステムがエラー21を返しました(デバイスの準備ができていません。)

ファイル 'E:\ SQL Database\S ***** d\NewAdvWorks.mdf'のオフセット0x0000000001c000での読み取り中に、オペレーティングシステムがエラー21(デバイスの準備ができていません。)をSQL Serverに返しました。 SQL Serverエラーログとシステムイベントログに追加のメッセージが表示される場合があります。これは、データベースの整合性を脅かす深刻なシステムレベルのエラー状態であり、すぐに修正する必要があります。完全なデータベース整合性チェック(DBCC CHECKDB)を実行します。このエラーは多くの要因によって引き起こされる可能性があります。詳細については、SQL Server Books Onlineを参照してください。

4
ManishKumar1980

私のために働いたもの:

alter database [database_name] set offline

...数秒待ちます...

alter database [database_name] set online 

SQL Serverを再起動すると、(アクセスできないデータベースだけでなく)すべてのデータベースがオフラインになるため、SQL Serverを再起動するよりも優れています。

11

今日も同じエラーが発生しました。 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の回答を読んだ後、データベースをオフラインにしてから、オンラインにしておく必要がある他のデータベースがある場合は、最初にオンラインにしてみます。

7
Paul Williams

まず、エラーメッセージに示されたログを読みます。

次に、サーバーをリセットしてから、DBCC CheckDB再び。

3
Paulo Santos

私の場合、使用することができました

_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スナップショットの組み合わせにより、ボリュームが異常な状態になったと思います。

0
John Chertudi