web-dev-qa-db-ja.com

NDFファイルの削除後にデータベースをアタッチ中にエラーが発生しました

SQL Server2008データベースから誤って.ndfファイルを削除しました。以前のコピーを添付しようとすると、SSMSは次のエラーを発生させます。

サーバー 'MDSWIN34'のデータベースの接続に失敗しました。 (Microsoft.SqlServer.Smo)


追加情報:

Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)


オペレーティングシステムは、ファイル 'C:\ Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\template.ndf'のオフセット0000000000000000での読み取り中に、エラー38(ファイルの終わりに達しました。)をSQLServerに返しました。 SQL Serverエラーログおよびシステムイベントログの追加メッセージにより、詳細が提供される場合があります。これは、データベースの整合性を脅かす深刻なシステムレベルのエラー状態であり、すぐに修正する必要があります。完全なデータベース整合性チェック(DBCC CHECKDB)を完了します。このエラーは多くの要因によって引き起こされる可能性があります。詳細については、SQL Server BooksOnlineを参照してください。 (Microsoft SQL Server、エラー:823)

これの理由は何ですか?すべてのデータを失いましたか?

2
M.S.Nayak

これまでに提供したすべての情報に基づいて、はい、すべてのデータを失ったと言わざるを得ません。それがどのように聞こえるかから、私はこのようなことが起こったと推測することしかできません:

  • ディスクがいっぱいになりました
  • この大きな.ndfファイルを見ました
  • あなたはそれを削除しようとしました(おそらくそれが二次データファイルであることに気づかなかったためです)
  • 使用中だったので削除できませんでした
  • sQL Serverを停止した(またはデータベースをデタッチした)
  • 今、あなたはファイルを削除することができます-そうですか?

問題は、.ndfファイルがデータベースの重要な部分であるということです。データベースをデタッチするかSQLServerをシャットダウンしないと、おそらく削除できなかったという事実が手がかりになるはずです。

.ndfファイルを追加してから、このデータベースのバックアップを作成していませんか?できれば、ファイルを削除した時点にできるだけ近いところからですか?

ここで、データベースのバックアップ(または、クリーンデタッチ後の.ndfと他のすべてのファイルの単純なファイルコピー)がない場合は、そうでない可能性があります[〜#〜] all [〜#〜]希望は失われます。ある種の削除解除ソフトウェアを使用するか、データ回復サービスに持っていくと、ファイルを回復できる場合があります。ただし、ファイルが存在していたディスク上の場所がゼロ化、フォーマット、または再占有されていない場合。運が良かったかもしれませんが、ここで行ったことは、基本的にドーナツをトイレに落とすのと同じです。あなたはそれの一部を取り戻すことができるかもしれませんが、それでもあなたはそれを望まないかもしれません。

残念ながら、これはバックアップが重要である理由を学ぶことと呼ばれ、難しい方法です。また、他の人が自分の目的がわからない場合は、システム上のファイルを削除してはならないという警告としても役立ちます。

7
Aaron Bertrand