- ベストアンサー
Accessでの理想の運用形態
はじめまして、Accessで業務用アプリケーションを作成しています 独学なので、何が正しいというものを分からず、 主にインターネットの情報を元に作成しています そこで、まずテーブルとそれ以外(クエリ、フォーム、レポートなど)を分割し、テーブルだけのmdbはファイルサーバー上に置いています 利用者のパソコンのデスクトップに、それ以外のmdbを置いています 接続はテーブルのリンクのみです ですので、利用者のmdbを開くと同時に、ファイルサーバー上の mdbも開き、ldb(ロックファイル)も生成されます これをファイルサーバー上のmdbを開かずに、テーブルのデータを 取得することは可能でしょうか DAOとかADOでVBAを使わなければならないのでしょうか アドバイスよろしくお願いします ちなみに、SQLServer2005ExpressEdtionをどこかのパソコンに インストールし、データベース環境を一新しようと思ったのですが どうすればいいのかがイマイチ分かっていません ヒントでもいいので、教えていただけないでしょうか
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 現在起きている問題というのは、 > mdbファイルが肥大化して、さらに常時誰かが利用しているので > そのmdbを最適化するタイミングがなかなか無いということ > > 又、mdbからのリンクテーブルで設計しているので、 > だんだんと処理速度が遅くなっていることです この場合は明らかに、サーバー系の DB に移行したほうがよいですね。 ネットワーク越しに MDB ファイルを利用するときは、ファイル全体が 読み込まれます。誤解されがちですが、対象テーブルだけが読み込まれる わけではありません。単なるファイルコピーと同じです。 この辺、興味があるようでしたら詳しくは下記記事を参照してみてください。 パケットで知るデータベース http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9911/packet/ 記事自体は古いですが、JET DB に関しては基本的に変わっていないはずです。 ただ逆に言えば、ふつうにファイルをコピーして(たとえばデスクトップに) 貼り付けたときにかかる時間をはるかに超えて待たされるようでしたら、 何か別のトラブルが発生している可能性が濃厚です。一度、比較してみては。 もしふつうにファイルコピーしてそれくらいかかるなら、どうしようも ありません。 MS SQL Server なり Oracle なりなんなりに移行しましょう。導入手順は、 検索すれば解説ページが公式・非公式ともに山のようにヒットしますので、 とにかくやってみて、詰まったところで具体的に質問を挙げれば具体的な 回答が付くと思います。 最適化に関しては、ずっと誰か彼かが開き続けていたらどうしようも ありませんが、そうでなければ [閉じるときに最適化する] オプションを オンにしておくことで多少改善されませんか。
その他の回答 (2)
- temtecomai2
- ベストアンサー率61% (656/1071)
今の運用方法でも特に問題ないと思いますよ。 ロックファイルが作られていても、特に問題なく複数ユーザーから同時アクセスできてませんか? ファイルサーバー等に Express Edition をインストールするんでもユーザー側の MDB から DB にアクセスする方法はリンクテーブルか ADO てとこで、特に違いはありません。 DB が壊れやすいかどうかとか、DB のバックアップ/リストアが可能とか、そんな違いです。管理するにはそれなりの知識が要ります。
- yu_tang
- ベストアンサー率81% (26/32)
>これをファイルサーバー上のmdbを開かずに、テーブルのデータを 取得することは可能でしょうか 自分が考えるに、無理だと思います。 ファイルサーバーにデータ mdb が置いてあるのですから、アクセス時に それが開かれるのは当然だと思いますが、それが何か? まわりくどい質問をするより、現在起きている問題をストレートに 提示したほうが、お互い時間の無駄が省けてよいのでは。
補足
アドバイスありがとうございます やはり開くのは当たり前なんですね それでも、開いた状態であっても、データ共有は可能である とのことなので、問題はないようです 現在起きている問題というのは、 mdbファイルが肥大化して、さらに常時誰かが利用しているので そのmdbを最適化するタイミングがなかなか無いということ 又、mdbからのリンクテーブルで設計しているので、 だんだんと処理速度が遅くなっていることです 回りくどい言い方をしましたが 現状の問題は以上です
補足
アドバイスありがとうございます mdbからのリンクテーブルの設計のせいなのか ファイルサイズが大きくなるにしたがって、処理速度が だんだんと遅くなっています これは、mdbから対象のテーブルのレコードを全て クライアント側に読み込み、それから処理をおこなうため 直接ソースにリンクテーブルを設定していると、かなり時間が かかってしまいます VPN経由で利用しているところもあるのですが、 ひとつのフォームを開くのに、数分かかるものもあります