「Accessを複数人で使うようになってから動作が遅くなった」
「ときどきAccessファイルが壊れて修復が必要になる」
「社内の共有フォルダにAccessを置いているが、この使い方で問題ないのか」
Accessを業務システムとして利用している会社では、このようなご相談があります。
Accessは複数人で利用することもできますが、ファイルの配置方法やネットワーク環境によっては、動作が遅くなったり、データベースファイルが破損したりするリスクがあります。
特に、1つのAccessファイルをそのまま共有フォルダへ置き、複数人が同時に開いている場合には注意が必要です。
今回は、Accessを複数人で使用するときに発生しやすい問題と、安定して利用するための共有方法について解説します。
Accessは1人専用のデータベースというわけではありません。
社内ネットワーク上にデータを配置することで、複数のパソコンから同じデータを参照・更新できます。
例えば、
などの業務システムで、複数の担当者が同じAccessデータベースを利用しているケースがあります。
数人程度の小規模な利用であれば、Accessでも十分運用できる場合があります。
ただし、利用人数が増えるほど「どのようにAccessを共有しているか」が重要になります。
よくあるのが、ファイルサーバーやNASの共有フォルダに、
販売管理.accdb
というAccessファイルを1つ置き、そのファイルを全員が直接開く方法です。
一見すると最も簡単な方法ですが、業務システムとして長期間利用するのであれば、あまりおすすめできない構成です。
このAccessファイルの中に、
がすべて入っている場合、複数の利用者が同じファイルへ同時にアクセスすることになります。
利用者が増えると、ネットワーク経由の読み書きが増え、動作が遅くなったり不安定になったりする可能性があります。
Accessでは、処理内容によっては共有フォルダ上のデータをパソコン側へ読み込んで処理します。
例えば10万件のデータから必要な100件を検索する場合でも、クエリの作り方によっては大量のデータがネットワーク上を移動することがあります。
1人で使用しているときには問題がなくても、5人、10人と同時に利用するようになると、通信量が増えて速度低下が目立つことがあります。
Accessでは、複数の利用者が同じレコードを同時に更新しようとすると、レコードロックが発生することがあります。
例えば、
担当者Aが顧客Aのデータを編集
↓
同時に担当者Bも顧客Aを編集
↓
一方の更新が待たされる、または競合が発生
といったことがあります。
頻繁に同じデータを更新するシステムほど、同時利用時の影響を受けやすくなります。
AccessのデータファイルをNASに置いているケースも多くあります。
NASだから必ず問題が発生するわけではありませんが、
といった環境では、Accessの処理速度や安定性に影響することがあります。
Accessでは頻繁にデータベースファイルへアクセスするため、一瞬の通信切断でも影響を受ける可能性があります。
Accessを共有利用している環境では、データベースファイルの破損が問題になることがあります。
代表的なのは、
といったケースです。
Accessはファイル形式のデータベースなので、データの読み書きをしている途中で通信が途切れると、ファイル自体が不整合を起こす可能性があります。
毎回必ず破損するわけではありませんが、
「半年に一度くらいAccessが壊れる」
「ときどきデータベースの修復が必要になる」
といった状態であれば、運用方法や構成を確認した方がよいでしょう。
Accessを複数人で利用する場合に基本となるのが、
フロントエンドとバックエンドの分割
です。
共有するデータのみを格納します。
例えば、
などです。
バックエンドのAccessファイルだけをファイルサーバーなどの共有場所へ配置します。
各利用者のパソコンには、
などを格納したAccessファイルを配置します。
フロントエンドから、共有フォルダにあるバックエンドのテーブルへリンクします。
つまり、
各PC
フロントエンド.accdb
↓
↓
↓
共有サーバー
バックエンド.accdb
という構成です。
フロントエンドを各パソコンへ配置すると、フォームやVBAなどのプログラム部分を共有ファイルから毎回読み込む必要がなくなります。
そのため、
などが期待できます。
Accessを複数人で使用しているのに、現在も1つのAccessファイルを全員で直接開いているのであれば、まず検討したい改善方法です。
分割した場合、フロントエンドのAccessファイルは共有フォルダから直接開くのではなく、基本的には各利用者のパソコンへ配置します。
例えば、
C:\AccessSystem\販売管理.accde
のように配置します。
共有サーバーに置くのはバックエンドのデータファイルだけです。
プログラムを修正した場合には、最新版のフロントエンドを各パソコンへ配布します。
利用者が多い場合には、起動時に最新版を確認して自動更新する仕組みを作ることもできます。
本社と営業所など、離れた拠点からAccessを利用したいというケースもあります。
例えば、
本社
↓
VPN
↓
営業所
という構成です。
VPNで接続できているからといって、LAN内と同じ感覚でAccessファイルを共有できるとは限りません。
拠点間通信では、
などが発生する可能性があります。
AccessのバックエンドファイルをVPN越しに直接読み書きする構成では、動作が非常に遅くなったり、ファイル破損のリスクが高くなったりすることがあります。
複数拠点で使用するのであれば、SQL Serverなどのサーバー型データベースへの移行も検討した方がよいでしょう。
Accessのフロントエンド・バックエンド分割を行っていても、
という状況では、AccessのバックエンドをSQL Serverへ移行する方法があります。
例えば、
現在
各PCのAccess
↓
共有フォルダのAccessデータベース
から、
変更後
各PCのAccess
↓
SQL Server
という構成にします。
画面や帳票、VBAはAccessに残し、データ部分だけをSQL Serverへ移行することができます。
そのため、Accessシステムを全面的に作り直さずに、データベース部分を強化できる場合があります。
SQL ServerはAccessのようなファイル型データベースではなく、データベースサーバーとして動作します。
そのため、
などの面でAccess単体よりも適したケースがあります。
一方で、現在使用しているAccessのフォームや帳票をそのまま利用できる場合もあります。
そのため、
「Accessを全部Webシステムへ作り直す」
という方法だけでなく、
「使い慣れたAccessを残し、データベースだけSQL Serverへ移行する」
という選択肢もあります。
「Accessは何人まで使えますか?」という質問をいただくことがあります。
ただし、単純に「○人まで」と決めることは難しく、
などによって大きく異なります。
例えば10人が登録・更新を頻繁に行うシステムと、10人がたまに検索するだけのシステムでは負荷がまったく違います。
そのため、利用人数だけでAccessが使えるかどうかを判断するのではなく、現在の使用状況を確認することが重要です。
Accessを複数人で使用していて、速度低下や不安定な動作がある場合は、次の点を確認してみてください。
複数の項目に当てはまる場合は、Accessそのものではなく、システム構成を見直すことで改善できる可能性があります。
Accessは複数人で使用できますが、単純に1つのAccessファイルを共有フォルダへ置けばよいというわけではありません。
特に長期間使用する業務システムでは、
などを検討することが重要です。
現在問題なく動いていても、利用人数やデータ量が増えたことで、数年後に速度低下やファイル破損が発生することもあります。
「最近利用者が増えてAccessが遅くなった」
「Accessファイルの破損が増えてきた」
という場合には、一度現在の構成を確認してみることをおすすめします。
システムハウスグローバルでは、既存のAccessシステムの調査・改修を行っています。
「1つのAccessファイルを複数人で使っている」
「最近利用人数が増えて動作が遅くなった」
「Accessファイルがときどき壊れる」
「フロントエンドとバックエンドを分割したい」
「SQL Serverへ移行した方がよいか判断したい」
といった場合でも、現在のAccessファイルや利用環境を確認し、改善方法をご提案することが可能です。
現在の画面や帳票、VBAなどを活かしながら、Accessファイルの分割や処理改善、SQL Serverへのアップサイジングなどにも対応しています。
Accessの複数人利用や共有環境でお困りの場合は、お気軽にご相談ください。
Accessは基本的に小規模システム向きです。
規模の制限はありませんが、ファイルサイズ(画面、データベース、帳票を含め)が最大で2GBまでしか作れません。
人数の制限もありませんが、弊社では10人以下での使用をおススメしております。
※同時使用でファイル破損のリスクがあるからです。
Microsoft Office(Pro)をお持ちであれば、Accessが含まれていますので購入する必要はありません。
Access単体での購入も可能です。
Accessで作ったシステムをパソコンで動作されるだけであれば、無料のランタイム(Access Runtime)というものがあります。
設計書がなくてもAccessファイルを解析して、どのような構造・機能になっているかを調査いたします。必要に応じて、現行機能をわかりやすく整理した資料もご提供可能です。
はい、主な原因としては次のようなものが考えられます。
これらの症状が見られる場合は、データベースの 診断・最適化・分割 などで改善できます。当社では現状調査から対策のご提案まで承っておりますので、お気軽にご相談ください。
mdb形式のままでも動作させることは可能ですが、マイクロソフトとしてはすでに、2003以前のAccessはサポート対象外としています。
accdb形式では新しい機能が追加されておりますので、機能強化等を行う際に、開発がしやすいといった利点があります。
今後もAccessを使い続けていくのであればaccdb形式にバージョンアップしたうえで、機能追加などの修正を行ったほうが、より長い期間使い続けていけるかと思います。