• ベストアンサー

データベースの不具合について

初歩的なことをお聞きします。 過去に、データベース(MDB)を使用したアプリを外注に作ってもらったのですが、なかなかうまくいきません。 現象はMDBが壊れたり、MDBのテーブルやクエリ自体がすべて消えてしまったりしています。なんでだからさっぱり分かりません。 過去にMDBが壊れやすいというのは聞いたことがあります。ただ、スタンドアローンで使用していますしそれほど付加をかけていないように思われます(外注談)。また、外注からはソフトでDBを壊すことは出来ないという回答も頂き、Windows2000のSP3にして様子を見てくれといわれました。 元々設計から開発まで外注任せにしていたせいもあり、そのソフトの構造を良く理解しておりません。 まず、どういった調査が必要か、または外注にどういうふうに言って対応してもらったら良いか教えて頂けないでしょうか。(過去の経験談でも構いません) 開発言語はVB6(SP5)です。(Jetを使っています) 何卒宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 VCでMDBのDBを操作するプログラムを作っています。  外注の人に以下の点を確認してみてください。 1.プログラムのどこかでVCからMDBを最適化していないか。 2.例外処理時やエラー時のクローズ等は完璧か。 3.ビギンセッションとコミット(ロールバック)を正しく行っているか。  1については、MDBは「最適化をVCから行ってはいけません」。テーブル情報以外の情報がすべて失われてしまいます。  2については、「例外」と呼ばれる特殊なエラーが発生したときに、正式な手順を踏まずに強引に終了したりすると、MDBのテーブル構造が壊れる可能性があります。  3については、マイクロソフトのライブラリの仕様だかバグだかにより、これやんないとMDBに正しく読み書きできないことがあります。  また、実際にMDBを運用している人に、定期的に最適化を行っているかも確認してみてください。  MDBは使ってるうちにゴミが溜まっていくので、ファイルが肥大化するごとに定期的に最適化する必要があります。  それから、「ソフトでDBを壊すことは出来ない」というこの言葉は、ちょっと自信過剰なんじゃないかと思います。  どういう経由でMDBを開いてるのか知りませんが、壊れるときは壊れます。

i-miyo
質問者

補足

早速の回答ありがとうございます。以下に補足させて頂きます。 1.についてソフトの開発言語はVBですがVBで最適化するのもまずいんですかね。 現在の仕様では一日一回行っております。詳しい情報と回避方法があれば教えて下さい。 3.良く分かりません。詳しい説明があるところを教えて頂けないでしょうか。

その他の回答 (6)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.7

#6の回答は少し質問の趣旨とずれてしまったようですね。 失礼しました。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.6

このケースはまず障害をうまく切り分ける必要があると思います。 「MDBが壊れたり、MDBのテーブルやクエリ自体がすべて消えてしまったりしています」。 ここで、どのタイミングで壊れるのか。必ずか、たまにか。 出来れば日時の記録をとって、外注と話をしましょう。 Windows2000のSP3にして・・・ マシン環境が書かれていないので、状況が良く見えませんが。 サービスパックの所為にして逃げるのはへっぽこSEの常套手段です。 契約上出来れば外注を呼び出し、直るまで缶詰ですね。

noname#25358
noname#25358
回答No.5

>DAO、ADO?で用意されているメソッドでは問題ないんですかね。  それは分かりません(^_^;  Win32APIというのは、DAO、ADO、RDOその他含めてという意味でした。

noname#25358
noname#25358
回答No.4

1.についてですが、VBでも、MDBを操作するには結局Win32APIなどを利用することになり、これらはCと変わりません。  VBとVCを読み間違え、例外の話をしてしまいましたが、VBに例外エラーはありません。すいません(^_^;  3は、これはプログラマーでないと話が通じないと思います。  つまり、MDBの操作手順として定められた正しい手順を使っているかどうか、ということです。

i-miyo
質問者

補足

度々で申し訳ありませんが再度質問があります。 先程Win32APIとありましたが、これはWin32APIの問題であって、DAO、ADO?で用意されている メソッド(RepairDatabaseメソッド、CompactDatabaseメソッド )では問題ないんですかね。 宜しくお願いします。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.3

外注任せにしているというのは、不安材料ですね。 結局、構造を理解できていないと、外注を責めることもできません。 また保守もできませんね。 MDBが壊れやすいというのは、よく言われていますが大抵の場合原因があります。ユーザの誤操作や、プログラムの不具合によるメッセージに対してのユーザの誤操作が原因になることが多かったようです。 プログラム納品時には、通常設計資料などを納入する契約があるはずですが、それらはどうなっているのでしょうか?設計資料があれば構造もわかると思います。 無ければ、そのソフトによって業務が止まるなどの問題が起きている場合にはその状況(問題が起こる頻度等)を書面にして、外注に責任を取ってもらうしかないでしょうね。上司や会社の営業などに相談するのも良いかもしれません。

i-miyo
質問者

お礼

早速の回答ありがとうございます。 確かに構造を理解していないと、色々と厄介ですね。(反省してます) また、相手からの納品物で、構造仕様書(とあるがほとんど機能仕様書)とモジュールぐらいです。ソースを解析するには手間暇が掛かりすぎるので実際行っておりませんが、最悪のことを考えて今から準備が必要ですかね。トホホ。

  • redsky
  • ベストアンサー率18% (66/360)
回答No.2

まず、契約書を見直してみたらどうでしょうか? 契約書の中にはバグ発生時の処置や保守についての項目があると思います。 それに沿った形で対応してもらえばいいと思います。 MDBがどういう条件のときの壊れるかは、マイクロソフトでさえよくわかって ないです。いわんや、その業者がわかるわけないです。 自衛策としては、定期的にバックアップをとっておいて、壊れたときに 備えるしかないです。

i-miyo
質問者

お礼

早速の回答有難うございます。 契約書の方確認してみます。といっても何処にあるのやら(笑) やはり壊れる時は壊れると考え、壊れた時の対処方法を重んじるべきなんですかね。

関連するQ&A