自営業で小さな会社を運営しています。

たまたま社内のスタッフにMicrosoft Accessでオリジナルのプログラムを作れる元SEがいるので、データベースを作成してもらいました。

このデータベースを異なる2か所の事務所で運用したいのですが、具体的な方法がわかりません。

アクセスのデータを、MY SQL のサーバーにエクスポートして、GUIはアクセスで運用する?

アクセスの知識はあり、オリジナルのプログラムを組むことはできますが、現状、SQLの知識はありません。作成しているシステムは、規模、内容とも簡単な部類に入ります。(抽象的ですみません。)

外国に住んでいるので、本を購入して独学で取り組みたいのですが、
おススメの本、役に立ちそうな本があれば、教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/11/07 14:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:wild_yamato No.1

回答回数224ベストアンサー獲得回数45

ポイント50pt

>アクセスのデータを、MY SQL のサーバーにエクスポートして、GUIはアクセスで運用する?
 良い考えとおもいます。MSアクセスがシェアできないことの対応なのですね。
 MYSQLのDBを立ち上げることができるのであれば、後はODBCで接続するだけで実現できると思います。
 この時に起こる可能性がある障害は、デッドロックです。また、業務の内容によってはセッション管理が必要となるかもしれません。
 いずれも処理の内容で影響しますが、複数の利用者が全く別のデータを扱うのであれば問題は発生しません。セッション管理の似ていますが、データの状態遷移が複数の利用者によって、更新される場合に矛盾を生じないようにする仕掛けです。これまで、事務所レベルでの運用が変わらないのであれば、大丈夫でしょう。
 また、問題が発生した場合は、DBがタイムアウトして、復旧します。その後で、該当データを確認すれば、後手ですが運用は可能です。
 因みに太字の知識がないのでしたら、それをキーワードに検索すれば、理解が進むと思います。
 上手く行くと良いですね。
 

他3件のコメントを見る
id:wild_yamato

設置の場所はそのとおりです。
Windofjulyさんのコメントの「ネットワーク上での共有はLAN内の話であり、それにも色々と制約があります。(ODBCもしかりです)」は、具体的でないので何を指しているのか分かりません。
MySQL初心者入門講座を読めば、他の方への質問も解消するものと思いますよ。

2012/11/01 19:24:29
id:nobu55

ありがとうございます。

2012/11/01 20:23:59
id:oil999 No.2

回答回数1728ベストアンサー獲得回数320

ポイント50pt

MYSQLを使うと、Accessとは異なり、GUIの部分を自力で作成する必要があります。HTTPベースで作るなら、RubyまたはPHPでMYSQLアクセス・プログラムを作るスキルと、HTTPサーバ(Webサーバ)を運用するスキルが必要になります。

それより、Accessデータベースを共有する方が敷居が低いでしょう。

Access データベースを共有する方法

http://office.microsoft.com/ja-jp/access-help/HA010279159.aspx

ネットワーク上での Access データベースの共有について

http://office.microsoft.com/ja-jp/access-help/HP005240860.aspx

参考書も紹介しておきます。

他1件のコメントを見る
id:oil999

それでしたら、Microsoft純正の無料DBMSのSQL Server Expressを利用してはいかがでしょう。
Accessからアクセスできますし、データコンバートも簡単です。
http://support.microsoft.com/kb/237980/ja
http://www.bitpower.co.jp/sqlserver_express/#useADP

2012/11/01 23:24:04
id:nobu55

ありがとうございます。

2012/11/06 12:21:26
id:SweetSmile1978 No.3

回答回数199ベストアンサー獲得回数31

ポイント50pt

2カ所の離れた拠点でアクセスのファイルを共有するのは少し難しいですね。
VPNなどを使って、LANのように接続できれば、
どちらかの拠点のファイルサーバを使って
アクセスのファイルを使用することもできますが。
Windows Server 2008 R2 を導入できるなら、
DirectAccess 機能なども使えますが、
インターネット接続に使用しているIPアドレスが
固定アドレスでないと難しい気もします。
ネットワーク面の知識や設備投資も必要になるので
負担も大きくなってしまうでしょうか。

比較的容易で現実的なものとして、
まず Access ファイルを SQl Server Express(無料)へアップサイズすることに挑戦し、
それができれば、SQl Server のデータベースを、
マイクロソフトのクラウドサービス SQL Azure へ移行することに挑戦する
という感じでしょうか。

アップサイジング ウィザードを使用して Access データを SQL Server データベースに移動する
http://office.microsoft.com/ja-jp/access-help/HA010275537.aspx

SQL Azure へのデータベースの移行
http://technet.microsoft.com/ja-jp/library/gg457938.aspx

Access ファイルを直接 SQL Azure へ移行させることも可能みたいですね。

AccessのデータベースをSQL Azureに移す
http://daiyuhatakeyama.wordpress.com/2011/03/16/access%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92sql-azure%E3%81%AB%E7%A7%BB%E3%81%99/


MySQL Server は商用利用はお金が必要じゃなかったかな。
システムを販売する場合だけだったかな。
いずれにしても、どこにサーバを立てるかという問題も出ることと、
扱うデータ型や文字コードなどの問題もあるので
素直に、SQL Server Express か、 SQL Azure がいいと思います。

他1件のコメントを見る
id:SweetSmile1978

その組み合わせでやったことはないのですが、できるはずです。
不安ならマイクロソフトのoffice関連フォーラムなどで質問すると
良いと思います。

2012/11/01 20:53:01
id:SweetSmile1978

要は、実際のデータ(テーブルなど)を SQL Azure に置くだけです。
Access + SQl Server も同じです。

2012/11/01 20:54:57
id:SweetSmile1978 No.4

回答回数199ベストアンサー獲得回数31

ポイント50pt

質問者の過去の質問は確認していませんでした。
前回は、同じ事務所内での話だと勝手に想像したうえでの話でした。
ごめんなさい。

Access のバージョンが 2000 だと
考え直す必要があるかもしれませんね。

  • id:windofjuly
    うぃんど 2012/10/31 21:14:57
    Access97の時代から使っておりますが、
    現在にいたってもまだ離れた事業所間でデータをリアルタイムに共有する方法はありません。

    ネットワーク上での共有はLAN内の話であり、それにも色々と制約があります。
    (ODBCもしかりです)

    この問題でAccessの利用を続けるとすればレプリケーションの利用ですが、
    リアルタイム更新ではなく、データ統合・更新の手間がかかります。

    リアルタイム更新すべき部分のデータ量がスプレットシートで管理できるような量であれば、
    googleドキュメントのようなネットワーク上で共有できるものに一部移行する、
    といったようなことも考えたほうが良いでしょう。

    この件は真の応用分野の話であり、広い視野で検討しなければならないことなので、
    本を頼りにちょっと読んで出来るような分野の話ではなく、
    おすすめするような本はありません。よって、ひとまずコメントで終わります。
  • id:nobu55
    Windofjuly様 コメントありがとうございます。

    ショックです。先が見えなくなってしまいましたw。

    業種は旅行業です。2つの事務所でお客さんの情報を管理したいのですが、小さい規模の事業なので、扱うデータ量はあまり多くありません。

    たまたま社内のスタッフが元SEで、MSアクセスを使えたので、MSアクセスをベースに話を進めてきたのですが・・・。
    どうしたら良いのか判断がつかなくなりそうな状況です。

    ここまで数カ月かけて、アクセス上のプログラムを作成してきたので、どうにかして、そのプログラムを無駄にすることなく活用できたらと考えています。

    長い目で見ると、MYSQLとPHPを使って、全てを作りなおした方が良いのでしょうか?(質問が的を得てないかもしれませんが・・)

    例えば、現在まで作り上げたMSアクセスのプログラムを、MYSQLとPHPを扱えるプログラマーに渡したら、簡単に変換することが可能だったりするのでしょうか?

    どの方向へ進むべきかわからないので、アドバイスをいただけると助かります。
    どうぞよろしくお願いします。
  • id:windofjuly
    うぃんど 2012/11/02 04:31:00
    oli999さんは、あいかわらず一部分だけを持ち出しますね。
    Access97の時代から…現代にいたるまでです。
    Access97にも共有機能はありましたし、
    レプリケーションと共有をごっちゃにしてもいません。

    無頼庵(id:wild_yamato)さんが回答No.2でコメントしておられるように、
    Accessの共有によるデータ破損などのトラブルはよくある話です。
    LAN内での接続に置いても、フォームやレポートとのリンク/非リンク構成、
    テーブル同士を繋げるリレーションシップの構成、クエリなどの微妙な調整がなければ、
    パフォーマンスも上がりませんし、安定運用も難しくなります。
    それがたとえ2台だけであったとしてもです。

    人力検索で細かな話をするのは無理があるので、
    とりあえずの話として、やりとりするデータ量と、
    リアルタイム性にどの程度重点をおかれれるのによって対応例を2つ挙げました。
    それがレプリケーションであり、スプレッドシートへの移行です。

    回答欄に書かないのは、Accessをそのまま利用するという趣旨からは外れるためであり、
    MDBを送ってもらって検分・検証を行うといった具体的対応までは出来かねる提案ベースだからです。
  • id:SweetSmile1978
    SweetSmile1978 2012/11/02 09:18:11
    > 現在にいたってもまだ離れた事業所間でデータをリアルタイムに共有する方法はありません。

    これは、SQL Azure などのクラウドサービスを利用すれば可能ですね。
    たしかに、データベースのつくりによっては
    複数の人間が同時にデータベースにアクセスすることによるデッドロック発生などの
    問題が生じることがありますが、
    そのあたりは「一つの処理のために複数のテーブルを参照・更新しない」のであれば
    問題にはならないと思います。

    とりあえず、SQL Azure には無料の体験期間があるので
    それで試してみることをお勧めします。
  • id:windofjuly
    うぃんど 2012/11/02 11:05:07
    お三人とも9/30の質問にも答えてますね。
    http://q.hatena.ne.jp/1348827256

    SQL Azureへの接続はODBCですからAccess2000でも可能なことでしょうけど、
    (流石に2000ではやったことない。)
    所詮はODBCです。

    提案しておられるので既にご存知だとは思いますが、
    その実は遠隔地のSQLServerと接続する場合と同様であり、
    トラブル対応も似たようなものになりますし、
    当然ながら運用にはAccessに対してそれ相当の知識が要りますし、
    SQLServerに対するもの(特にストアド)と同程度の知識が要ります。

    前回質問への回答ではAzureのAの字も出てきていませんでしたね。
    失礼ながら、付け焼刃ではないですよね?
    トラブルの話も例としてあげてみてはいかがでしょうか?
    可能性の話であってお勧めしているわけではないというのであれば、
    それはそれだと思いますが…。
  • id:windofjuly
    うぃんど 2012/11/02 11:23:24
    Access2000ならADP(MSDE)と言ってしまいそうな自分がいますが、
    今ではSQLServerExpressという無償版のSQLServerがありますので、
    拠点内の1台にSQLServerExpressをインストールして、
    複数台のAccessからODBC接続して運用するという実績を積み重ね、
    その上で離れた拠点との接続(この場合はVPNと併用)に挑戦するか、
    Azureへの移行に挑戦するという形になるでしょう。
    なお、安定運用には、ストアドの習得は必須ですし、
    パフォーマンスアップにはAccessVBAも必須となってきます。

    ADPを出したので、ついでにSharePointについても少しだけ触れておきましょうか…。
    ADPもSharePointも今のシステムを使い続けるというのとは微妙に違いますので初出としています。
    こちらもVPNで拠点間を繋ぐという形になります。
    http://office.microsoft.com/ja-jp/access-help/HA010356866.aspx
  • id:wild_yamato
    SweetSmile1978さん
    >そのあたりは「一つの処理のために複数のテーブルを参照・更新しない」のであれば
    問題にはならないと思います。
     ”複数のテーブルを参照・更新しない”処理で業務アプリは出来ませんよ。
     デッドロックを回避するには、競合するトランザクション処理のアクセス・シーケンスを統一すれば良いのですよ。
     ご参考まで。
  • id:SweetSmile1978
    SweetSmile1978 2012/11/02 16:07:39
    そんなことは質問者が確認して出す情報です。
    あくまでもそういうものでなければ・・・
    という情報を与えただけです。
  • id:nobu55
    ご回答をいただいた皆様
    回答、ご意見、本当にありがとうございました。
    事務所内でデータベースを作っている担当スタッフと、色々と相談しました。

    知識と技術が十分でないので、せっかくいただいたアイディアなのに使用することができないものもありましたが、とりあえず、Windows Azure を試してみます。 アクセス2000ではAzure 、を使用できなかったので、アクセス2010を入手しました。

    担当者はAzure にテーブルを設置して、接続することができた。と話しておりましたが、
    Azure を使用する上で、何か注意点等ございましたら、アドバイスいただけると助かります。

    本当にありがとうございました。



この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません