たまたま社内のスタッフにMicrosoft Accessでオリジナルのプログラムを作れる元SEがいるので、データベースを作成してもらいました。
このデータベースを異なる2か所の事務所で運用したいのですが、具体的な方法がわかりません。
アクセスのデータを、MY SQL のサーバーにエクスポートして、GUIはアクセスで運用する?
アクセスの知識はあり、オリジナルのプログラムを組むことはできますが、現状、SQLの知識はありません。作成しているシステムは、規模、内容とも簡単な部類に入ります。(抽象的ですみません。)
外国に住んでいるので、本を購入して独学で取り組みたいのですが、
おススメの本、役に立ちそうな本があれば、教えてください。
>アクセスのデータを、MY SQL のサーバーにエクスポートして、GUIはアクセスで運用する?
良い考えとおもいます。MSアクセスがシェアできないことの対応なのですね。
MYSQLのDBを立ち上げることができるのであれば、後はODBCで接続するだけで実現できると思います。
この時に起こる可能性がある障害は、デッドロックとです。また、業務の内容によってはセッション管理が必要となるかもしれません。
いずれも処理の内容で影響しますが、複数の利用者が全く別のデータを扱うのであれば問題は発生しません。セッション管理の似ていますが、データの状態遷移が複数の利用者によって、更新される場合に矛盾を生じないようにする仕掛けです。これまで、事務所レベルでの運用が変わらないのであれば、大丈夫でしょう。
また、問題が発生した場合は、DBがタイムアウトして、復旧します。その後で、該当データを確認すれば、後手ですが運用は可能です。
因みに太字の知識がないのでしたら、それをキーワードに検索すれば、理解が進むと思います。
上手く行くと良いですね。
現在にいたってもまだ離れた事業所間でデータをリアルタイムに共有する方法はありません。
ネットワーク上での共有はLAN内の話であり、それにも色々と制約があります。
(ODBCもしかりです)
この問題でAccessの利用を続けるとすればレプリケーションの利用ですが、
リアルタイム更新ではなく、データ統合・更新の手間がかかります。
リアルタイム更新すべき部分のデータ量がスプレットシートで管理できるような量であれば、
googleドキュメントのようなネットワーク上で共有できるものに一部移行する、
といったようなことも考えたほうが良いでしょう。
この件は真の応用分野の話であり、広い視野で検討しなければならないことなので、
本を頼りにちょっと読んで出来るような分野の話ではなく、
おすすめするような本はありません。よって、ひとまずコメントで終わります。
ショックです。先が見えなくなってしまいましたw。
業種は旅行業です。2つの事務所でお客さんの情報を管理したいのですが、小さい規模の事業なので、扱うデータ量はあまり多くありません。
たまたま社内のスタッフが元SEで、MSアクセスを使えたので、MSアクセスをベースに話を進めてきたのですが・・・。
どうしたら良いのか判断がつかなくなりそうな状況です。
ここまで数カ月かけて、アクセス上のプログラムを作成してきたので、どうにかして、そのプログラムを無駄にすることなく活用できたらと考えています。
長い目で見ると、MYSQLとPHPを使って、全てを作りなおした方が良いのでしょうか?(質問が的を得てないかもしれませんが・・)
例えば、現在まで作り上げたMSアクセスのプログラムを、MYSQLとPHPを扱えるプログラマーに渡したら、簡単に変換することが可能だったりするのでしょうか?
どの方向へ進むべきかわからないので、アドバイスをいただけると助かります。
どうぞよろしくお願いします。
Access97の時代から…現代にいたるまでです。
Access97にも共有機能はありましたし、
レプリケーションと共有をごっちゃにしてもいません。
無頼庵(id:wild_yamato)さんが回答No.2でコメントしておられるように、
Accessの共有によるデータ破損などのトラブルはよくある話です。
LAN内での接続に置いても、フォームやレポートとのリンク/非リンク構成、
テーブル同士を繋げるリレーションシップの構成、クエリなどの微妙な調整がなければ、
パフォーマンスも上がりませんし、安定運用も難しくなります。
それがたとえ2台だけであったとしてもです。
人力検索で細かな話をするのは無理があるので、
とりあえずの話として、やりとりするデータ量と、
リアルタイム性にどの程度重点をおかれれるのによって対応例を2つ挙げました。
それがレプリケーションであり、スプレッドシートへの移行です。
回答欄に書かないのは、Accessをそのまま利用するという趣旨からは外れるためであり、
MDBを送ってもらって検分・検証を行うといった具体的対応までは出来かねる提案ベースだからです。
これは、SQL Azure などのクラウドサービスを利用すれば可能ですね。
たしかに、データベースのつくりによっては
複数の人間が同時にデータベースにアクセスすることによるデッドロック発生などの
問題が生じることがありますが、
そのあたりは「一つの処理のために複数のテーブルを参照・更新しない」のであれば
問題にはならないと思います。
とりあえず、SQL Azure には無料の体験期間があるので
それで試してみることをお勧めします。
http://q.hatena.ne.jp/1348827256
SQL Azureへの接続はODBCですからAccess2000でも可能なことでしょうけど、
(流石に2000ではやったことない。)
所詮はODBCです。
提案しておられるので既にご存知だとは思いますが、
その実は遠隔地のSQLServerと接続する場合と同様であり、
トラブル対応も似たようなものになりますし、
当然ながら運用にはAccessに対してそれ相当の知識が要りますし、
SQLServerに対するもの(特にストアド)と同程度の知識が要ります。
前回質問への回答ではAzureのAの字も出てきていませんでしたね。
失礼ながら、付け焼刃ではないですよね?
トラブルの話も例としてあげてみてはいかがでしょうか?
可能性の話であってお勧めしているわけではないというのであれば、
それはそれだと思いますが…。
今ではSQLServerExpressという無償版のSQLServerがありますので、
拠点内の1台にSQLServerExpressをインストールして、
複数台のAccessからODBC接続して運用するという実績を積み重ね、
その上で離れた拠点との接続(この場合はVPNと併用)に挑戦するか、
Azureへの移行に挑戦するという形になるでしょう。
なお、安定運用には、ストアドの習得は必須ですし、
パフォーマンスアップにはAccessVBAも必須となってきます。
ADPを出したので、ついでにSharePointについても少しだけ触れておきましょうか…。
ADPもSharePointも今のシステムを使い続けるというのとは微妙に違いますので初出としています。
こちらもVPNで拠点間を繋ぐという形になります。
http://office.microsoft.com/ja-jp/access-help/HA010356866.aspx
>そのあたりは「一つの処理のために複数のテーブルを参照・更新しない」のであれば
問題にはならないと思います。
”複数のテーブルを参照・更新しない”処理で業務アプリは出来ませんよ。
デッドロックを回避するには、競合するトランザクション処理のアクセス・シーケンスを統一すれば良いのですよ。
ご参考まで。
あくまでもそういうものでなければ・・・
という情報を与えただけです。
回答、ご意見、本当にありがとうございました。
事務所内でデータベースを作っている担当スタッフと、色々と相談しました。
知識と技術が十分でないので、せっかくいただいたアイディアなのに使用することができないものもありましたが、とりあえず、Windows Azure を試してみます。 アクセス2000ではAzure 、を使用できなかったので、アクセス2010を入手しました。
担当者はAzure にテーブルを設置して、接続することができた。と話しておりましたが、
Azure を使用する上で、何か注意点等ございましたら、アドバイスいただけると助かります。
本当にありがとうございました。