- 締切済み
データベースのアタッチができなくなりました
SQLServer2000 logデータを書き込む領域がなくなりましたというエラーメッセージが出ましたので、 logファイルを削除するためにデータベースをデタッチしました。 このときに何かのメッセージが出ましたが、強引にデタッチをしました。 logファイルを削除し、データベースをデタッチしようとしたところ、 「ログファイルとして指定したファイル名が間違っています。新しいログファイルが作成されます。続行しますか?」というメッセージが出ました。 「はい」を選択すると 「エラー 1813 新しいデータベース’データベース名’を開けませんでした。CREATE DATABASEは中断されます。デバイスアクティブ化エラー物理ファイル名’C:\Program Files\Microsoft SQL Server|MSSQL\Data\データベース名_log_LDFは正しくありません。’」 というメッセージが出て、アタッチに失敗してしまいます。 データベースを復元しましたが、logファイルが無いためか、一ヶ月以上前の時点までしか復元できません。 ldfファイルはありません。(ゴミ箱の中にも) mdfファイルは残っていますので何とかなると期待しています。 大変困っています。 どなたか解決方法をご存知でしょうか。 ご教授よろしくお願いいたします
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Tom-3
- ベストアンサー率32% (42/130)
1.SQL Serverのエンジンを停止する。(おそらく現時点ではしなくてもよい) 2.該当のmdfファイルをデータ格納場所以外のフォルダに移動する。 例)「C:\Program Files\Microsoft SQL Server|MSSQL\Data\」が データ保存先である場合は「Dドライブ」の直下などに移動。 3.SQL Serverのエンジンを起動する。 4.1ヵ月前のデータベースを「mdf」、「ldf」共に 「C:\Program Files\Microsoft SQL Server|MSSQL\Data\」 へ復元する。 5.SQL Serverのエンジンを停止する。 6.「Dドライブ」に移動した「mdf」ファイルを 「C:\Program Files\Microsoft SQL Server|MSSQL\Data\」に複写する。 ※ 上書きする。 7.SQL Serverのエンジンを起動する。 8.該当のDBにアクセスしてみる。 これで解決できると思います。 ちなみに「logデータを書き込む領域がなくなりました」というエラーメッセージ が表示される原因は「復旧モデル」が「完全」になっているからと思われます。 差分バックアップを行わないDBであれば、「復旧モデル」は「単純」が最適とおもわれます。