• ベストアンサー

Accessでは力不足?

現在、仕事で個人データを取り扱っています。 Accessで作成したデータベースをWindows2000Serner (ファイルサーバー)におき複数(10名以上)のクライアント (Win98・WinMe・Win2000)で使用しています。 使用する際、各クライアントは直接サーバーのAccessファイルを開いています。 データのファイルサイズは3メガバイト強で、メインのレコード数が1300程度、 それからリレーションを組んだテーブルが複数個あります。 データは随時各クライアントが更新しています。 この状態でAccessを使用していると、動作が非常に遅かったりする 場合があります。また、開けない場合もあります。全く使用できないほど 動作が遅いわけではありませんが、ちょっと不便です。 こういった環境ではAccessを使用することは適していないのでしょうか? また、もっと賢いAccessの使いかたがあるのでしょうか?

  • oom
  • お礼率29% (26/87)

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

  • ベストアンサー
  • hidebu-
  • ベストアンサー率53% (45/84)
回答No.3

そうですね、、、インテグレーターの立場とすれば外部委託してくださいといいたいところですが(そちらのほうが儲かりますし^^;)、 しかし、 個人的な意見としては現状のACCESSでの運用で動作が遅いなどパフォーマンスだけの問題で悩んでいらっしゃるだけなら、社内の人間で片付けるのがよいと思います。ゼロからの構築でしたら無理難題でしょうけれども、現状のACCESSのシステムをMSDEに移植して運用するだけでしたら社内の人間のだれかが400ページほどの本で勉強するだけでことたりてしまいます。仮に外注したとするとン十万のお金を請求されます(ゼロからだとン百万からン千万)。そして導入してもらったとしても、わからないことがあってサポートを受けるたびにサポート料をとられてしまいランニングコストもばかになりません。 それでしたら、最初は多少苦労するかもしれませんが社内で片付けたほうが会社自体のレベルアップにもつながりますし、運用後になにかトラブルがおこったときもなにかと都合がいいと思われます。仮に外注するにしても、社内の人間のだれかがある程度のスキルを身に付けておかないと訳もわからずなんだかんだと請求されてコストばかりかかってしまいますよ。 せっかくマイクロソフトがACCESS(JET)からMSDEのデータ移行を簡単にしてくれているのですから、一度挑戦されてみては? 個人的な意見なので自信なしとしときました^^;

oom
質問者

お礼

そうですね・・・。 今後何かの為になるでしょうし、勉強はしてみようかと思います。 会社からテキスト代とある程度の時間をいただけるのでしたら・・・。 どうもありがとうございました。

その他の回答 (2)

  • hidebu-
  • ベストアンサー率53% (45/84)
回答No.2

かなりデンジャラスな運用をされてますね^^; データ件数はともかく、マルチユーザーで直接MDBをキックするというのはかなりマズイです。 てっとり早くMSDEに移行するのがいいでしょう。 MSDE自体はACCESSのCDにバンドルされてますので無料で明日からでも運用ができます。 ただ、MDBを直接起動していたときとちがって、システム管理者に多少のスキルが求められます。 MSDEは腐ってもSQLサーバーのサブセットですから、現在のファイルサーバーをデータベースサーバーとして運用し、インターフェースにACCESSを使うということになります。 権限やらなにやらでサーバー側の設定、クライアント側の設定でMDBのときよりは導入に手間がかかってしまいます。 しかし、一度導入してしまえばMDBを扱ってたころとさほどかわらずに運用ができます(管理者以外は^^;)。 しかもSQLサーバーのサブセットですから、仮にクライアントが100台になったとしてもMSDEからすぐにアップグレードできます。 経験上、10クライアントくらいならMSDEでも問題ないです(コストの関係もありますしね)。クライアントが100台超になるとさすがにSQLSERVERやORACLE等にしないとキツイですが^^;(クラスタリングなどでやりようによってはMSDEでもいけますが。。。あとLINUXとフリーDBコンビでも。) 関連URLをリンクしておきますが、一度、おおきな書店に足を運んで関連書籍を購入することをおすすめします。 なんとなくで情報資産をとりあつかってると、必ずヒドイ目にあいますから^^;

参考URL:
http://www.sqlpassj.org/bunkakai/begin/series/default.aspx
oom
質問者

補足

解答ありがとうございます。 正直、ちょっと恥ずかしいですね・・・。 社内にサーバーなどに精通しておるものがおらず、 私がAccessを覚えて突貫工事のような状況でやっていました。 以前まではロータスのアプローチを使用してたようです。 会社がどれだけ投資できるのかにもよりますが、 外部に委託しちゃったほうがいいんでしょうか。

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.1

ハッキリ申しますと、こういった環境ではAccessを使用することは適してません。 基本的にはACCESSは個人用のデータベースフロントエンドツールです。 あくまでもファイルサーバーに置いているだけであって、実際にはクライアントで動作しているため、ファイルサイズは3メガバイト強で、メインのレコード数が1300程度であるとするとかなり動作は遅くなるのが当然であると思います。 まず、とりあえずはデータベースの最適化を行ってみてください。 「ツール」-「データベースユーティリティ」-「最適化/修復」で行えます。 少しだけ軽くなるかもしれません。 しかし、そもそも10クライアント以上がある以上、データベースがいつ壊れてもおかしくありません。 基本的には個人用に設計されているためいつかは必ず壊れます(断言)。 また、全く使用出来なくなるほど遅くなる日も近いでしょう。 もし、ACCESS2000でしたら、MSDEが使えます。 MSDEでしたら、簡単に既存システムをアップグレード出来ますし、クライアント/サーバーに対応してますのである程度の複数ユーザの同時更新が考慮されてます。 ただし、5ユーザー以内がサポート範囲ですので、10ユーザー以上となるとまだまだ無理があると思われます。 そう考えますと、リレーショナルデータベースであるSQL-Server等にアップグレードする方が一番無理がないと思われます。 いずれにせよ、残念ながらACCESSのMDBファイルをサーバーに置く運用は既に限界であると認識してください。

oom
質問者

お礼

早速の解答ありがとうございます。 やはりそうでしょうね。 今後、データもクライアントも増加する可能性があるので、 早めに手を打っておかねば、と思います。 会社ではちょっとサーバーをアップグレードしたりする ことがあまり認知されていない(というか誰も興味が無い)ようなので、 これからは危険性を訴えつつ、MSDEというものに対して関心を 持ってみようと思います。今まではAccessのみを使用し、とくに SQLなどは意識していなかったのですが、現在の環境から MSDEとは移行できるものなのでしょうか?

関連するQ&A

  • Accessで、複数のテーブルで随時、レコードを増やすには…

    Accessを使って、複数のテーブルにリレーションを付けて顧客データベース作りました。 顧客は随時増えていくので、一つのテーブルにレコードを追加したときに、他のテーブルのレコードもそれに連動して、増やす方法はないでしょうか? 現在は、各テーブルに予め十分な(余分な)顧客番号を設定し、顧客増加に対応しています。

  • Access2003でメモリ不足になります。

     Access2003をクライアントに、Oracle9iをDBサーバとして2層クライアントサーバシステムを会社で運用しています。しかし、Access2003のMDBを4つ同時に立ち上げて業務を行うためか、3時間でメモリ使用量が500MBになります。端末の物理メモリ容量は512MBのため、3時間で動作がとても緩慢になってしまいます。  MDBからDBサーバへのアクセス作業を行ううちに、メモリが完全に解放されずに残るケースがあり、それが蓄積されているようです。データベースへの参照(SELECT)よりも、書き込み処理(INSERT, UPDATE,DELETE)を行った後に使用メモリの蓄積が発生しやすいです。  また、フォームの開閉時よりも、別のMDBにフォーカスを移すと、メモリの解放が行われず、メモリの蓄積が発生しているようです。複数のMDBを起動している場合、一番最後のMDBを終了させるとメモリ使用量が元に戻ります。  背景としましては、最近、会社の基幹システムを刷新しました。刷新したといっても、ソースコードは変更せずに、Oracle7.2 Server/Access97で動作していたクライアントサーバシステムを、Oracle9.2 Server/Access2003に変更し、その変更に伴い動作がおかしくなる部分を修正しただけです。  MDBを複数立ち上げなくてはならないのは、とても基幹システムの規模が保守につぐ保守で大きくなってしまったため、MDBを機能単位で分割しているからです。  Access2003からOracle9.2へのアクセスはODBCを利用しています。クライアントのOSはWindows2000Professional sp4、サーバOSはWindowsServer2003、Oracle9.2はStandard Editionです。  Access97時代にはこれほどのメモリ使用量にはならず、現在はお昼休みに全てのMDBをいったん終了してから再度使用する運用でなんとか切り抜けています。  どなたか解決のヒントをご教授いただければ幸いです。

  • Access レコードのエクスポート

    Accessのmdbファイルをサーバー上に置いてあります。 クライアントPCからサーバーにアクセスし、フォームを使用して取引先データを入力します。 クライアントPCはネットワークから切り放して使用することもあるため、取引先データをクライアントPC本体にも保存したいのです。 形式としては、クライアントPCにもmdbファイルをつくり、その中のテーブルに保存したいのですが、 テーブルごとエクスポートするのではなく、フォームで入力しているそのレコードのみクライアントPCのテーブルにエクスポートさせ、その後は1件ずつ追加されていく形をとりたいのです。 (クライアントPCは複数台あるため、自分のPCで入力したもののみ、自分のPCに取り込みたいのです) テーブルまるままエクスポートまでは書けたのですが、レコードをエクスポートが分かりません。 ご教授ください。

  • アクセスのデータアクセスページについて・・・

    アクセスのデータアクセスページを作成はできました。自分のPC内ではなんら問題なく動きます。 ただ、これを、Webを介すとなると問題が起こります。 レンタルサーバー内にアップロードして、ブラウザから参照・追加・変更などしたいのですが・・・ 2点分からない点があるのですが・・・ ●まず、もとのデータベースファイルを自分のPCにおいて、データアクセスページのhtmlファイルのみ、サーバーにアップロードして、ブラウザを通してデータ操作する場合。 と ●もとのデータベースファイルをサーバーにおいて、データアクセスページも当然サーバーにおいてブラウザにて使用する場合。 と、 まず、以上2点が可能かどうか・・・ということと、それを動作させるための、パスの設定方法。 初歩的な質問で大変申し訳ありませんが、教えてください。(できるだけわかりやすく) よろしくお願いいたします。m(_ _)m

  • VBからサーバ上のAccess mdbにアクセスする方式について

    クライアントのVBアプリからサーバ上のAccess mdbにアクセスしたいのですが、 データベースがAccessの場合、データを丸ごとクライアント側に持ってきて、クライアント処理になってしまうと聞きました。 サーバ上でデータセットを作成してクライアントに渡す方法があれば教えてください。 よろしくお願いします。

  • ACCESSのレコードを削除してもファイル容量が小さくならない

     ACCESSのデータベースのレコードを削除しても、データベースファイルの容量が小さくならないのですが、これはしょうがないことなのでしょうか。  ACCESSをデータベースとして使いたいのですが、社内LANサーバー上にデータファイルを置こうと思っているので、データファイルの容量を小さくしておく必要があると思うのですが…  データベースファイルの容量が大きくなってきたら、また新たにファイルを作ってデータを移管するなどしなくてはならないのでしょうか。  初心者ですので、できれば平易な言葉でお教えいただけるとうれしいです。よろしくお願いします。

  • vb6でaccessデータを他ファイルに複製

    vb6を使用し、1から2へのデータ移行が求められています。 1.accessファイルA / テーブルが複数ある / データが沢山入っている / リレーションが無数に張られている 2.accessファイルB / テーブルが複数ある(一部新しいテーブル・フィールドが増えている) / 空データ / リレーションが同様に無数に張られている リレーションが無数になければ、インポート等でよいのですが、 色々考えて、必要テーブルの、docmd acimportを試しましたが、リレーションが崩れるのでダメでした。 簡単にいえば、手動でデータを1から2にコピー→ペーストしたいような感じです。 何かよい方法はありますでしょうか。

  • PHPで外部サーバーのデータベースにアクセスは可能でしょうか?

    PHPで外部サーバーのデータベースにアクセスは可能でしょうか? データ量が多すぎて複数のデータベースに分けております。 またサーバーも変える必要があるためサーバーも複数に分けております。 サーバー1にデータベース1 サーバー2にデータベース2 サーバー3にデータベース3 がある状態で、サーバー4からPHPプログラムでデータベースにアクセスして、サーバー4に設置してあるホームページにデータを表示するプログラムを作りたい。 このような事が出来るのでしょうか? PHPプログラムが置いてある同一サーバー上のデータベースへのアクセスは出来たのですが、外部サーバーへのアクセスの仕方が解りません。。。 サーバーはXrea、さくらインターネットを使用しています。 PHPとMySQLを使用。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • accessの次のデータベース

    質問させていただきます。 今現在accessでデータベースを構築し、20万から30万件のデータを6名程度で入力しています。当たり前ですがレスポンスは落ちています。 ファイルが破壊してしまうのと、入力した後オペレータが検索して使用するので、レスポンスが遅いと業務に支障が出てしまいます。 accessは複数での使用に適していないことや、データ量のこともあり他のデータベースに移ろうと考えています。 SQLのexpressや、PHP+MYSQLなどを考えているのですが、私のスキル的にできるかぎり簡単にできる方法を探しています。 accessの危険をとりあえず回避したのち、きちんとしたデータベースの勉強をして強化できればと思っています。 MSDEを使用し、データテーブルのみをサーバーに移し、accessをフロントエンドで使用する方法を聞いたのですが、この方法だとクエリをクライアント側で実行するのでレスポンス的にはあまり変わらないような気がします。 何かいい方法があればご教授お願いいたします。

  • ACCESSのリレーションが切れてしまいました

    素人で甚だ恐縮ではございますが、社内システムのACCESS2003のデータベースでリレーション定義が無くなってしまい、アプリで削除していないにも拘わらず主たるテーブルのレコードの各項目に"deleted"或いは"#deleted"が入ってしまいました。 リカバリーは、「データベースの最適化/修復」を行い、リレーションを定義していた先のテーブル内のレコードを削除し、再度リレーション定義し再登録にて回復しました。 リレーションが切れる(無くなってしまう)原因がわかりません。 どういったケースで発生しうるかご教示頂ければと存じます。