- ベストアンサー
ACCESSの解析でDBが壊れた?
- ACCESSの初心者がデータの不整合を解析しようとした際、何かの影響でDBが壊れた可能性がある。
- 昨日、ACCESSでデータの解析を行っている最中に問題が発生し、終業時間のために強制終了せざるを得なかった。
- 再度ACCESSを立ち上げた際には、以前存在していたテーブルが不明な理由で消えてしまっていた。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Accessの.mdbファイルは、何かというとぶっ壊れるとっても危ない ファイルです。 ですので、何かの作業をするときは「やった結果がどうなるか」100% 把握の上、必ずバックアップを取ってから作業するのが常識ですし、 強制終了などもってのほか、ほぼ確実に二度と起動しなくなります。 ですので、問題は「強制終了をかけたこと」で、それ以外の問題は ささいなことです。「無警告でデータが失われている」可能性すら あるので、即座にバックアップを使って上書きですね。 バックアップがない場合、中身のデータは全然保証できませんので、 過去の出力から手作業で全件照合するしか方法は無いです。
その他の回答 (2)
- FEX2053
- ベストアンサー率37% (7991/21371)
>「別名で保存」ですがこれもACCESSからVBAかなにかでやる 普通は、「起動時の処理」の中にVBAで記述するんですけどね。VBAを 使わないなら、「起動する前にエクスプローラを使い、別のフォルダに ドラッグ&ドロップ」で済みます。 ちなみに、同じフォルダだとコピー時に名前重複でエラーしますから。 また、どうせなら別ドライブに保存(例えば外付HDDとか)する方が、 ハードウエア故障の時も影響が及ばすに安心です。 処理終了時の別名保存も、VBAでコードを記述しないなら、「処理を 終了してからドラッグ&ドロップ、そのうえで"ファイル名"を変更」 で済みます。別にAccesssを使わないでも「エクスプローラ」の機能で こんな風にバックアップは簡単にできるんですよ。 毎回同じ作業が面倒だ、と思うなら、頑張ってVBAを勉強して下さい。 この処理はかなり「簡単」な部類に属するので、初級の勉強で十分 対応が可能だと思います。
お礼
FEX2053さん ありがとうございました。 とりあえずはハンド処理で行くことにします。 VBAもぼつぼつ勉強したいと思います。
- FEX2053
- ベストアンサー率37% (7991/21371)
Microsoftの設計思想はともかく、ちゃんとしたシステムを作る場合、 データベースはOracleなどの「定評のある」データベースシステムを 使い、それをAccessからダイナミックにコールする・・・というのが この手のシステムを作るプログラマのやり方ですね。 何せ、Accessは複雑な処理を簡単に作ることができ、なおかつ頑張れば 専用システムっぽくなるまで、かなり作り込むことができるという、 非常に有能なアプリなので、不安定でも「データ操作部分」はAccess で頑張りたいんです。おまけに「クエリを処理しているだけ」なら 経験上あまり異常は起きず、テーブルをいじるときに主に問題が起きる んで、テーブルを別アプリにすると、安定するんですよね。 ただ、「ちゃんとした」データベースソフトは高いので、私のような 「Accessでチャッチャと作る」プログラマは以下のどちらかにします。 1..mdbを開きに行ったら、まずいきなり「別名で保存」を掛け(この 別名は使いまわしで毎回更新される)処理終了後の保存時にも「ファ イル名+日付」で保存を掛ける。このとき、「最適化」もやっておく (やらないとファイルがどんどん大きくなる) 2.データ処理用の.mdbと、データ保存用の.mdbを別々に作り、ダイナ ミックにリンクさせる。データ保存用.mdbは起動時と終了時しか アクセスしないので処理中のトラブルから保護される。また、終了時 に1.同様「ファイル名+日付」で保存を掛けるとバックアップできる。 マトモ系のプログラマなら2.を選びますけど、プログラミングが面倒 なので、イーカゲン系プログラマの私などは1.でやってます。実際、 納品後に「バックアップからのリカバリー」を何回も経験してますが 「前日の処理終了時点に戻る」ということで了解してもらってます。
お礼
FEX2053さん 何度もありがとうございます。 丁寧な説明ありがとうございました。 わたしもオラクルなど買えないのでACCESSで行きたいのですが すみません初心者なもので具体的にどうしたらいいのか分かりません。 「別名で保存」ですがこれもACCESSからVBAかなにかでやるのでしょうか? なにせVBAはまだ使いこなせていません。 ハンドで保存するということでしょうか?
お礼
FEX2053さん ありがとうございます。 ACCESSというのはそんなに危ないシステムなのですか。 もともとWindowsですから危ないのは当たり前のようなものではありますが 「強制終了などもってのほか、ほぼ確実に二度と起動しなくなります。」 というのは驚きです。 EXCELのようなメモリーベースで動くものではない。 しかも一応はスプレッドシートより業務寄りであると思われる 「データベースのシステム」なのだから、もし何かあっても 元のDiskの内容が失われることは無いはず と考えていたのですが違うんですね。甘かったです。 そのときのデータ内容ばかりか、元のデータベースのデザインすらも こんなに簡単にぶっ壊れるなんてACCESSの設計思想自体が 根本的におかしいような気がします。 正常に処理ができるまで元のファイルを残しておくという基本的かつ 単純な原則を無視しているということですね。 いったい何を考えて作ったんですかね? しかしいい勉強になりました。 これから思い出し出しハンドで修復を試見ることにします。 それにしてもACCESSがこんなに脆弱で当てにならないソフトだなんて どの本にも書いてなかったです。 入門書の一番最初に大きな文字で「警告!」とか書いていてほしかったです。 トホホ・・・・ 済みませんがついでにひとつだけ教えてください。 ACCESSというのはそんなに壊れやすいクセをしてその仕組みの全てを ,mdbという1つのファイルにまとめてしまいますよね? 壊れやすいのに全部一蓮托生。 そんな馬鹿な・・・ということになりますが、 古いデータを残しても結局は一蓮托生のデータベースの中に作ることになって バックアップの役は果たさないということでしょうか? データベース自体を別名で残していくとか言うことになるんでしょうか? 何かスマートな方法は無いものでしょうか?