MSDE FunClub | 最終更新日 : 2000/07/29 | |
Microsoft Data Engine FunClub |
|
この問題は、SQLServer2000(Beta2)で改善されたことを確認しました |
マイクロソフト社へのお問い合わせはできません |
VisualBasicマガジン企画顧問でおられる秋月巌氏から教えて頂き、調査した結果、裏付けも取れましたので皆様にお伝えします。またこの件はマイクロソフト社のサポートページでも掲載されている情報です(日本語情報/英語情報)。ただこの公表内容の意味がよく理解できず、私も『SQLServer7/MSDEサポート技術情報』で整理していたにもかかわらず、その重大性を見落としていたことに恥じております。この問題を説明したのが、このページです。
この問題は、どうも仕様のようです。そこで、データファイルの破壊が起こらないよう、ハードディスクの物理的設計を行なってください。また頻繁にトランザクションログのバックアップを行なってください。
この問題は、SQLServer2000(Beta2で検証)で、改善されたことを確認しました。できる限り、SQLServer2000をお使いください。
では、この問題を再現してみます
1.データベースを適当に作成する
Enterprise Managerなどで、適当にデータベースを新規に作成してください。
ここでは、Sampleデータベースを作成しました。
2.完全バックアップの実行
Backup Database命令などで、Sampleデータベースの完全バックアップを実行してください。なおこのバックアップ操作は、この問題を再現させるために必要な操作ではありません。省略しても構いません。
ただこの完全バックアップデータベースが、データベースの復旧操作で基点となるデータベースであることを認識するためです。
3.テーブルを作成してデータ入力
適当なテーブルを新規に作成し、適当なデータ入力を実施してください。ここで入力したデータは、先ほど実施した完全バックアップデータベースには含まれていないことを認識してください。しかしトランザクションログファイルの方には記録されています。
4.すべてのSQLServer7サービスを止めてデータベースをシャットダウン
データベースサービスを全部止めて、SQLServer7を終了します
5.Sampleデータベースのデータファイル名の変更
ここで、Sampleデータベースのデータファイル名を書き換えます(リネーム)。名前を書き換えることで、データベースのクラッシュ(破壊)が起きたことを擬似的に再現させます。
プライマリデータファイル名を書き換えましょう。Sample.MDFデータファイル名を書き換えました。
6.SQLServer7を起動する
ファイル名を書き換えて、データベースサービスを開始してSQLServer7を立ち上げます。Enterprise Managerを起動しましょう。
データファイル名の名前を書き換えたので、Sampleデータベースに対して操作することはできません。この状態が、データベースがクラッシュした状態です。
幸いにも、トランザクションログファイルは正常に生きています。しかも完全バックアップデータベースがありますので、ログのバックアップを取り、復旧操作ができるはずです。データベースの教科書には、このような記述があります(私も著書でそのように解説をしました)
そこでこの状態で、トランザクションログのバックアップ命令を実行してください。トランザクションログファイルのバックアップは実行できましたか?
この現象を解説しているのが、この公開情報です。
この問題がどのような意味を表わすのか、賢明な方はご理解頂けると思います。簡単に言えば、トランザクションログファイルが幸いにも破壊から免れ大丈夫であっても、破壊直前のデータベースに復旧させることが無理であると言えます。
この問題は、SQLServer2000で改善されました。できる限り、SQLServer2000をお使いください