• 締切済み

ACCESSからSQL Serverへの移行について

こんにちは。 現在、ACCESS2000を使ってクライアントサーバーのシステムを構築 しております。 サーバーはWindows2003 Serverですが、データベースのMDBファイルを 置いてあるだけです。 クライアントはネットワークドライブを切って、サーバーのデータを 参照しています。 稼動してから8年間が過ぎ、機能強化を重ねた結果、いろいろと 問題点が出来ました。 データの大きさは、3ヶ月使用し続けると90MBまで膨らんでしまいます。 また、WAN越えの環境も出てきてしまい、レスポンスの悪さに頭を 悩ませています。 現在、このシステムの見直しを行っております。 まず、MDBファイルをデータベースとして使用した場合、3ヶ月で90MB という大きさは問題視すべきなのでしょうか? また、WAN越えで高レスポンスを得るためには、どのようなデータベース、言語を選択すべきなのでしょうか? 先輩の技術者からは、SQL Serverへの移行、またはDB2の採用を勧められました。 このような環境下でのシステム構築に経験がある方、どんなことでも よいのでアドバイスを頂けたらと思います。 長くなりましたが、よろしくお願いいたします。

みんなの回答

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

>>UIがACCESSのままでもデータベースを変えるだけで、レスポンスは良く なる可能性はあると思うのですが、やはり常にデータベースとリンクし ている以上、レスポンスの改善には繋がらないとの見解でした。 そんなことはないでしょう。ACCESSのままですと、検索処理の対象データが1000件あるとして、検索結果が1件になる場合、ネットワークを1000件のデータが流れます。でもSQLServer/DB2にすることで、サーバサイトで絞り込みがされるため、ネットワークには結果の1件だけが流れることとなります(他のデータも流れるでしょうが、とりあえずおおざっぱに)。 もちろん常に1000件のデータが必要な処理が多いなら、ネットを流れるデータは減らないため、レスポンス向上は、あまり見込めないでしょうが・・・。 >>フロントエンドの部分について、何かアドバイスがございましたらよろ しくお願い致します。 最近は、この手のプログラムを作ってないので、よくわかりませんが、昔、VisualBasicでプロントエンドのプログラムを作ったとき、使いやすさを追求すると作るのが「めんどくさい!!」って感じましたね。 あと、普通にACCESSで作るのと、SQLServe/DB2を使ってプログラムを作るのでは、かなり差があります。後者はレスポンスをあげるため、SQLを駆使してコーディングしますので、もし現状がSQLをあまり使っていないコードなら大幅な書き直しが必要かもしれません。

YT0925
質問者

お礼

lv4u様 どうもありがとうございます。 別の技術者に相談したところ、フロントエンドがACCESSでも、やはりデータベースを DB2なりSQL SERVERへ移行すれば、レスポンス良は期待できるとのことでした。 理由は、ネットワークドライブとSQLでパケットの転送手段が根本的に違うからとのこと。 フロントエンドはACCESSを継承することで、開発工数をなるべく減らし、 レポート機能の資産も継続できそうです。 ただ、やはりデータベースを参照するコードは大幅に書き換えが必要 になりそうなのですが、これは致し方なしなので、頑張ります。 どうもありがとうございました。 とりあえず、締めさせて頂きます。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>また、WAN越えで高レスポンスを得るためには、どのようなデータベース、言語を選択すべきなのでしょうか? 基本的に、ACCESSは1人でデータベースを使うための個人ユーズをターゲットにしています。なので、以下の先輩のアドバイス >>先輩の技術者からは、SQL Serverへの移行、またはDB2の採用を勧められました。 に従うのがいいですね。とくにWANで使うのは、絶対やめるべきでしょう。言語としては、使いやすいものにすればいいと思います。お手軽さという面では、Rubyを使って、RubyonRailsってのもありかもしれません。 >>まず、MDBファイルをデータベースとして使用した場合、3ヶ月で90MB という大きさは問題視すべきなのでしょうか? 上に書きましたように、ACCESSは個人ユーズを目的にしたDBです。こうしたファイルの増大は、良くないのですが、どうしようもありません。システムの作りがどうこうというより、ACCESSを採用していることが問題なんです。 なお、SQLServerあるいは、DB2に変更することで、いろいろと学ぶことが必要だと思います。がんばってください。

YT0925
質問者

お礼

lv4u様 どうも貴重なご意見ありがとうございます。 言語については、現在クライアントもACCESS2000のため、VBAで構築 されております。 先輩のアドバイスでは、DB2、SQL Serverへの移行に伴い、WAN越えを 考慮するのならば、VB.NETをすすめられました。 現在の資産を生かした形で、比較的安価で再構築できるからです。 (ACCESSからVB.NETへ変換できるソフトもあるとのこと) UIがACCESSのままでもデータベースを変えるだけで、レスポンスは良く なる可能性はあると思うのですが、やはり常にデータベースとリンクし ている以上、レスポンスの改善には繋がらないとの見解でした。 いずれにせよ、いろいろと試してみるしかないかと思いますので、がん ばりたいと思います。 フロントエンドの部分について、何かアドバイスがございましたらよろ しくお願い致します。

関連するQ&A

  • VBでSQL-serverをプログラムする

    VBでmdbファイルを操作するプログラムを勉強していますが、データベースをサーバー管理するならば、AccessではなくSQL-serverなどを使った方が良いと聞きました。 質問なんですが、 SQL-serverには、Accessと同じようにユーザーフォームを使ってデータベースシステムを構築するような機能が付いているのでしょうか? そもそもOracle、dBase、SQL-serverといったデータベースソフトは、DBそのものを作成するソフトであって、DBシステムを構築するにはVBなどによるプログラム開発が必要なのでしょうか? 分かりにくい質問ですみません。

  • AccessとSQL server 2005 Express Editionについて

    今ある、Accessの照会システムがあります。 テーブルはサーバ(Win2003Server)にmdbファイルを置いてます。 照会画面、レポート等のプログラムは各クライアントにそれぞれmdbを置き、サーバにあるmdbファイルをリンクテーブルで参照しています。 今後照会だけでなく入力エントリプログラムを追加していくのですが そのエントリは9台同時に入力することが考えられます。 今のmdbで9台同時複数エントリはAccessのmdbでは当然無理なので 今あるインターフェースをAccessで DBをSQL server 2005 Express Editionで考えています。 容量はMAX4GBと聞いているのですがデータの規模は4GBで問題ありません。 SQL server 2005 Express Editionでクライアント9台同時接続できるのでしょうか? 費用をかけれないので無償のSQL server 2005 Express Editionで考えています。 可能かどうか知りたいのです。9台の同時接続で運用にも耐えれるのかも疑問です。Express Editionでは無理があるのかも知りたいのです。 無理であれば今ある資産を利用して費用をかけないで済む方法があれば助かります。 どうぞよろしくお願いします。

  • VBからサーバ上のAccess mdbにアクセスする方式について

    クライアントのVBアプリからサーバ上のAccess mdbにアクセスしたいのですが、 データベースがAccessの場合、データを丸ごとクライアント側に持ってきて、クライアント処理になってしまうと聞きました。 サーバ上でデータセットを作成してクライアントに渡す方法があれば教えてください。 よろしくお願いします。

  • WANの向こう側の SQL Server をデータソースに追加する方法

    「データソース(ODBC)」を設定することで、WANの向こう側のDBにアクセスできるような環境を構築したいと思っています。 サーバーとクライアントには、どのような設定が必要ですか? [環境] サーバー: WindowsServer2003, SQLServer2000, DNS クライアント: Windows2000 以上、宜しくお願い致します。

  • MDB→SQL Server Expressの移行

      お世話になります。 長文失礼します。 現在稼動中の MS ACCESS 2003で作られた業務管理システムがあります。 そのシステムのDB部分のみ SQL Server 2008 Express に移行するという作業を行なっています。 ※データ照会などのレスポンスアップが目的です 現行のシステムは FORM.MDB(インターフェースのみ) → DATABASE.MDB(データのみ) 移行後は FORM.MDB(インターフェースのみ) → SQL Server 2008 Express(データのみ) となります。 まず、DATABASE.MDBにあるテーブルをACCESSの機能である "アップサイジングウィザード"を使用し、SQL Server に移行しました。 次にテーブルのリンク先をDATABASE.MDB から SQL Server に張り替えました。 基本的には上記の処理のみでデータの照会等うまくいっているのですが 大量の件数(約20万件)のデータを照会する画面で結果が表示されるまでの速度が (現行のシステムと比較して)低下したため改善を行なっております。 上記の照会画面では ACCESSのクエリで複数のテーブルを繋げ、集計した結果を表示しています。 このクエリの代わりにSQL Server側でビューとして作成し、それに対してテーブルリンクを張れば 良いのではないかと考え、実行しました。ビューにリンクを張ったクエリ名を仮に"Q_照会"とします。 結果、照会結果を表示するまでの時間はかなり短縮できた(ように見えた)のですが 照会結果をスクロールや、PageUpキーによるページ移動をすると毎回1、2秒後に スクロール後の結果が表示されます。※現行システムではスムーズにスクロールします。 プロファイラで監視してみるとページ移動した時に、"Q_照会"をテーブルキー指定で SELECT している事がわかりました。毎回10レコード取得しています。 この様な記述は私は書いていませんのでACCESS(SQL Server?)が勝手に行なっている 動きだと思われるのですがどこかで設定できるのでしょうか? また今回、ACCESSのクエリをSQL Serverのビューに置き換える方法を取りましたが 別の方法でレスポンスアップが望める方法があればご教授お願い致します。  

  • MS Accessが時間と共に重くなる

    MS Accessでシステムを構築したのですが、同じ画面を使い続けるとパフォーマンスが悪くなります。 <システムの構成> ファイルサーバにテーブルを持つmdbファイル(サーバmdb)を置き、 各PCに置かれた、フォーム、レポート、クエリ、VBAを持つmdb(クライアントmdb)から接続します。 各PCのクライアントmdbのフォームを何時間か使い続けていると、サーバからデータを取得するのが遅くなります。 (調べてみると並び替え(order by)が主な原因のようです。参考までに遅くなった時のデータ取得件数は2万件程でした。) ただし遅くなっても、1度フォームを閉じて開き直すと、同じデータでも再び速くなります。 どうすれば速くなるかは別途考えなければいけませんが、そもそも何が原因なのでしょうか。 ・朝(使い始め)は速い ・同じフォームをずっと使い続けるとデータ取得が遅くなる ・フォームを閉じて開き直すと再び速くなる メモリが関係してそうな気がしますが、MS Accessではこういうことは起こるもの(仕様)なのでしょうか。原因が知りたいのですが、何か情報はないでしょうか。

  • Access と SQL Server の接続

    20年ほど前にAccessとSQL Server Express でADPのシステムを自社用に自分で構築したのですが、多忙のためそのままになっていました。 いまさらですが、システムを再構築しようと思います。 Local で自分のコンピュータ内であれば、Access からSQLサーバに接続できるのですが、社内のネット環境内でAccessクライアントからサーバのSQLへの接続ができなくて困っています。 現バージョンのAccessからSQL Server Express への接続方法の参考書籍がありましたら、ご紹介願います。 ネットでいろいろと検索してみましたが、私にとってはキーワードが限りなく連鎖するため途方に暮れています。 宜しくお願いいたします。

  • SQL Serverへの接続ができません

    お恥ずかしながら、何か根本的なことが解っていないので、困っております、どなたかご教授くださいませ。 [環境] VB6+ADO2.7+SQL Server2000(又はMSDE)でシステムを構築しています。 [開発環境] 社内で開発していた時は、各PCにSQL Server2000のCDからクライアントツールをインストールしています。 開発環境ではサーバーへの接続はうまくいっております。 [困ったこと] Install Shield Expressで顧客用のSETUPファイルを作成してADO等の必要なファイルはインストールしているのですがいるのですが、接続できません。 あらかじめクライアントに何か設定しておく必要があるのでしょうか? いろいろ調べてみるとudlファイル?かODBC?と訳がわかりません。 開発環境のODBC画面には何もありませんので、udlかとは思うのですが、サーバーを参照させるにはどうしたらいいのでしょうか?

  • Accessの接続先をSQLサーバーからアクセスDBにしたい

    はじめまして、宜しくお願いします。 現在、Access2002、SQLサーバー2000を使ってタイトルのようなことを 実現したいと思っています。 現在作っているファイル名の拡張子はDBにSQLサーバーを使っているので「adp」です。 しかし、システムが完成した後で、扱うデータ量がそんなに多くないことと、SQLサーバーをDBに使うとお金もかかってしまうということが分かったため やはり、アクセスの中だけの閉じたシステム(「mdb」のような状態)にしたいと思っています。 システム自体は完成してしまっているので、mdbファイルとして 作り直すには効率が大変悪いと思っています。 そこでシステムファイルはそのままでDBの接続先だけSQLサーバーから アクセスDBに変えようと思っているのですが、 なかなかうまくいかず、行き詰っています。 もしかして、そのようなことは無理なのでしょうか? もしもなにかお気づきの方が居られましたら、 ご教授宜しくお願いします。

  • サーバにはACCESSがインストールされていなくても、データの管理は可

    サーバにはACCESSがインストールされていなくても、データの管理は可能ですか? サーバOS:WinXP(SP3) クライアントOS:サーバと同じ サーバにはデータ部を配置(data.mdb) クライアントにはプログラム部を配置(program.mdb) クライアント側からデータを入力し、サーバのdata.mdbへデータを書き込みます。 このような状態で、サーバにはAccess(Officeすべて)をインストールしていなくても データの管理は可能ですか? サーバから直接data.mdbの参照等は一切できないでしょうが、データの管理について 何か問題がありますでしょうか? どなたか回答お願いします。 ※参考 Office2007Proをクライアントにインストールしてます。