Microsoft Access Club Access超初心者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルACCESS+他のデータベース
記事No83287
投稿日: 2018/03/28(Wed) 14:49
投稿者音次郎
解決済: ON
OS:Windows10
Access Version:ACCESS2013

こんにちは、いつもこちらのフォーラムでいろいろ検索して参考にさせていただいております。

今回、直接ACCESSの操作方法などではないのですが質問させてください。

よくACCESSは基本的に複数のPCなどからネットワークで接続して使用するとファイルが壊れる可能性があるとか、10万件など大量のレコード数のテーブルになるとパフォーマンスがかなり落ちるという記事を読んだことがあります。

実際まだ自分が業務で使用するACCESSファイルを作り実際に3000件程度のレコード数でして、現在のところ1台のPCで使用しておりますので、上記の不安要素はないのですが、将来的に複数ユーザー(10名以下)の接続の必要が出てきた際や、レコード数の増加や、ファイルサイズが2GBを超えるようになった際にどう対応しようかと考えております。

ACCESSは長年使用しておりますが、ようやくよほど特殊なことでなければVBAも含めて使いこなしてきたというレベルです。

半年ほど前に、Visual Studioに無料で使用できるバージョンがあることを知り、興味があって、ACCESSで作ったものを、Visual Studioでも作ってみようとしたところ、完全にお手上げでした(汗)

あらためてACCESSの手軽さを実感しました。

現在ACCESSでシステムを作る際は、メンテナンスやバックアップのしやすさから、
フォームやVBAのみのシステム的なファイル + データ(テーブル)のみのファイルに分けてリンクテーブルとして作っております。

◆長くなりましたが、ここからが質問になります

例えば、フォームなどのUI部分はACCESSでつくり、データ部分はSQL SERVERやMySQLなどのデータベースを使えば、上記で書いたような、壊れやすい、複数接続に弱い、データ(データ数&ファイルサイズ)が増えた場合のパフォーマンスの問題は解決できるのでしょうか?

タイトルRe: ACCESS+他のデータベース
記事No83288
投稿日: 2018/03/29(Thu) 21:17
投稿者深海
解決済: ON
> 例えば、フォームなどのUI部分はACCESSでつくり、データ部分はSQL SERVERやMySQLなどのデータベースを使えば、上記で書いたような、壊れやすい、複数接続に弱い、データ(データ数&ファイルサイズ)が増えた場合のパフォーマンスの問題は解決できるのでしょうか?

私はSQL Server + ACCESS で運用しています。
SQL Serverであれば、Accessのテーブルを簡単に移管できます
ODBCで接続すればリンクテーブルの感覚で運用できます

タイトルRe^2: ACCESS+他のデータベース
記事No83289
投稿日: 2018/03/29(Thu) 22:47
投稿者音次郎
解決済: ON
> 私はSQL Server + ACCESS で運用しています。
> SQL Serverであれば、Accessのテーブルを簡単に移管できます
> ODBCで接続すればリンクテーブルの感覚で運用できます

>深海さま

実際に運用しているということでご回答ありがとうございます。

よろしければ、複数同時接続や、現在のレコード数でのパフォーマンスがAccessフォーム+Accessデータベースでの違いなどがあれば教えていただければと思います。

タイトルSQL Serverへ移管するメリット
記事No83290
投稿日: 2018/03/29(Thu) 23:38
投稿者深海
解決済: ON
> よろしければ、複数同時接続や、現在のレコード数でのパフォーマンスがAccessフォーム+Accessデータベースでの違いなどがあれば教えていただければと思います。

音次郎さん、お疲れ様です。 深海です
SQL Serverの方が破損のリスクは格段に減ります。
Accessであれば負荷の掛け方で簡単に破損することがありますが、
SQL Serverではそのようなことはありませんでした。

また破損していたとしても、データベースを自動的に修復する機能があるため
破損していたとしても、数時間経てば、自動で修復できます。

処理速度はSQLの書き方などでかなり変わってきます。

リンクテーブルを介していると遅いので、パスツールクエリを使うとかなり
処理速度が改善されます。

またDLOOKUP関数などのD系関数は、SQL Serverの性能を引き出せません。
理由はすべてのデータを条件の有無にかかわらず、取得して処理するためです。

SQL Serverのストアドプロシージャを使えば改善されます。
AccessのADPなどでストアドがつかえます。

あまり知られていませんが、AccessのフォームからVBAとADO経由で
ストアドプロシージャを実行することができます。

同時接続でもSQL Serverが優れています。 もともと大規模の同時接続処理を
想定しているため、ある程度知識がなくてもトランザクション処理を自動で
行ってくれます。

自動バックアップ処理はexpress版ではありませんが、
タスクスケジュールと組み合わせれば、express版でも可能です。

10万件を超えたあたりからAccessでの処理に不安が残りますが
SQL Serverでは問題ありません。

数十名の規模であれば、Windows Server を用意しなくてもWin7やWin10の
クライアントOSにSQL Serverをインストールしての運用でも行けると思います。

現在の運用はWin10のPCにインストールしていますが問題はありません。
もともとサーバーPCでCPUはXeonを搭載している機体ですがサーバーOSを
入れる予算がなかったので、Win10をいれています。

のちWinServerに移管予定です。

VBA、ADOでプログラムが組めるようであれば、SQL Serverに移管して
フォームなどからの入力はAccess側で行う方がいいと思われます。

ただ人数が増えてくると予算の都合でランタイムで配布するとかしないと
いけないかもしれません。 そのときはVBAの画面でランタイムを配布するまえに
コンパイルしておかないとVBAのコードが動かないことがありますので気をつける
必要があるとおもいます。

将来的にはC#での開発出来れば、低予算でいいものが作成できます。
C#やVBでの接続はデータアダプタが処理してくれますので
データベースの接続ができれば、開発はそんなに難しくはありません。

条件式などVBAと記述が違いますが、SQLがしっかり記述できればうまくいくと思います

タイトルRe: SQL Serverへ移管するメリット
記事No83291
投稿日: 2018/03/30(Fri) 09:24
投稿者音次郎
解決済: ON
深海 さま

具体的な運用情報のご回答ありがとうございます。
私の現在の知識ではすぐに移行は少し大変そうですが、将来的にとても参考になる情報をありがとうございます。

>SQL Serverのストアドプロシージャを使えば改善されます。
AccessのADPなどでストアドがつかえます。

Dlookupはとても気軽でいつも多様していましたので、とても参考になります。

沢山の具体例をありがとうございました。

タイトルRe^2: SQL Serverへ移管するメリット
記事No83292
投稿日: 2018/03/30(Fri) 09:25
投稿者音次郎
解決済: ON
解決済みにさせていただきます。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る