• ベストアンサー

Accessで作成したサーバDBへの接続が重い

サーバーPCにAccessで作成したDB(テーブルのみ)を置き、 クライアントPCには、Accessで作成したソフトをインストールし、 そのインストールしたソフトを使用してサーバーDBへの 接続を行い、データの入力や変更を行っています。 (テーブルのリンク を使用しています) そこで質問なのですが、 クライアントPCが2台あったとして、 1台目のソフトを起動するときは普通に接続できるのですが、 その1台目のPCでソフトを起動したままの状態 (サーバDBと接続されている状態)で、 2台目でもソフトを起動しようとする (サーバDBと接続しようとする)と、 とても時間がかかります。 とても時間はかかるのですが、しばらくするとつながり、 一度繋がればそこからは普通に使用できるようになります。 原因が何かご存知の方が見えましたら ご教授お願いします。 また現在はそのサーバDBを参照するクライアントPCは4台程度ですが、 将来的にクライアントPCを数十台に増やしたいということなので、 今の段階からAccess以外のDBへの乗せ替えを検討したほうがよいでしょうか。 DBといっても色々な種類があると思いますが、 Accessからの乗せ替えが容易で、且つ安価なDBはありますか? こちらも重ねて教えて頂けたら幸いです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

手前味噌ですが、過去の回答を参考にして下さい。 http://okwave.jp/qa3578425.html 数年前(6年位かな)作ったシステムで、 4人同時使用でストレスなく使っていました。 今回の質問と構成は似ています。 ------------------------------------------------------------- >2台目でもソフトを起動しようとすると、とても時間がかかります。 >一度繋がればそこからは普通に使用できるようになります。 起動時以外は正常だと言う事なので、起動時の処理が怪しいですね。 起動時に開くフォームや、実行されるモジュール等あれば、 その内容を見直して頂いて、どこで時間がかかるのか? 原因を特定する必要があると思います。 具体的な方法として、簡単なのは、 ソースの所々で MsgBox を表示するようにして、 時間がかかる処理を探します。 ------------------------------------------------------------- >とても時間がかかります。 ちなみに、「とても」とは、どれ位ですか? 数分?数十分?数時間? ------------------------------------------------------------- >原因が何かご存知の方が見えましたら 質問の内容だけでは、原因特定は困難だと思います。 もう少しそちらで原因を探って頂いて、 何か新しい情報がありましたら、補足欄へお願いします。 あと、OSやAccessのバージョンもお願いします。 ------------------------------------------------------------- >将来的にクライアントPCを数十台に増やしたい 数十台となれば、Accessのみでは無理だと思いますので、 データベース側は置き換える必要があるでしょう。 (クライアント側のシステムはAccessのままで良いと思います) 上記の回答にもありますが、 SQL Server 2005 Express Edition から ステップアップする方法があります。 ------------------------------------------------------------- >且つ安価なDBはありますか? Express Edition は無償ですが、 次の Workgroup Edition 以降は高価です。 http://www.microsoft.com/japan/presspass/detail.aspx?newsid=2403 また、サーバ役のPCのOSに関しても、数十台なら、 サーバ用のOSが必要になり、クライアントにCALも必要です。 これもXPやVistaに比べると、高価になります。 http://www.microsoft.com/japan/windowsserver2003/sbs/howtobuy/pricing.mspx 費用を抑えることを考えるなら、 無償のデータベース(PostgreSQL等)を、 無償のOS(Linux系)で利用する事をご検討下さい。 この場合も、クライアント側はAccessで作れますので、 現行システムの大部分を、再利用する事が可能だと思います。 http://allabout.co.jp/internet/database/closeup/CU20050219A/

chulara
質問者

お礼

返信が遅くなり申し訳ありません。 丁寧なご回答ありがとうございました。 ご意見を参考にさせて頂き、 もう少し追求してみようと思います。 ありがとうございました。

その他の回答 (1)

noname#140971
noname#140971
回答No.1

<確認> サーバーPCとは、字義通りワークステーションタイプでOSもそれなんでしょうか? 1、分散型のC/Sシステムでも12台程度が限界。共有型なら数台が限界。 2、SQL Server+Access.adp なら全ての関数ライブラリはAccess のを転用できます。   (もちろん、転用・共有を意識して作成していることが要件です) ちょっとしたテスト結果ですが、<SQL Server+Access.adp>は<Access>の50倍速です。 >Access 2000から、『Microsoft Accessプロジェクト』形式による保守が可能となりました。 >Accessプロジェクトを使うと Access2000 と SQL Server7.0 との親和性をより向上させ、 >Accessデータベースを作る感覚で C/Sシステムの構築ができます。 >・・・Acccessプロジェクトは、C/Sシステム構築の新たな開発環境として、 >大きな進化を遂げたのは確かです。 (インフォネット 本田剛氏)

chulara
質問者

お礼

返信がおそくなり申し訳ありません。 ご回答ありがとうございます。 やはりSQLServerへの移行を視野に入れていく方向で 考えたほうがよさそうですね。 Accessプロジェクトに関しての知識があまりないので、 そちらのほうも色々調べてみようと思います。 ありがとうございました。

関連するQ&A

  • accessからSQL-Serverへの接続で

     ネットで調べても見つけ方が悪いせいか、参考になりそうなのが見つからなかったので、こちらでも情報を得ようと致しました。    Accessで、ADOを用いて、小さなシステムを作りましたが、フロントをAccessにして、DBをSQL-Serverで作りなおしてみようとしております。    Windows7 Pro 64bitのパソコンにaccess2010にて、当初作成しました。  そのパソコンに、SQL-Server2014 express をインストールしております。    元々、画面とDBを分けてAccessで作成しており、リンクテーブルでつなげております。  SQL-Serverとの接続においても、リンクテーブルでつなげて、同じPC内での正常稼働は確認ができましたが、そのPCをDBサーバーとして、別PCにAccessの画面を置いて、稼働させようとしましたが、エラーとなります。  そこで、接続設定及びコードの書き方を教えて下さい。    本来なら、サーバ機とサーバOSを購入してなのでしょうが、基幹システムでもない限り、購入費用はねん出してくれません。PC買うのにも渋り、HDDやCPU等の部品だけを購入して、私が直し、未だにXPを社員には使ってもらっているような中小企業であることをご理解ください。  環境イメージとして、 <サーバ> Windows7 Pro 64 bit SQL-Server 2014 express PC名:AAA DB名:YYY saアカウントで、パスはxxxx <クライアント> 現在Accessだけでも最大接続3名いるかいないかなので、とりあえず1台として Windows7 Pro 32bit Access2010ランタイム accdeのフロント部分 リンクテーブルでADOでサーバにつなぎに行きたい。 accdbでODBC接続設定をしたものをaccdeに変換したものを配布。  他PCからの接続には、ファイアウオールの設定等々も必要とのことで、それは施しました。  また、下記、コードを追加。 Dim cnnS As ADODB.Connection Dim recW As ADODB.Recordset Set cnnS = New ADODB.Connection Set recW = New ADODB.Recordset cnnS.Open "Provider=SQLOLE DB;" & _ "Data Source=AAA\SQLEXPRESS;" & _ "User ID=sa;" & _ "Password=xxxx;" & _ "Initial Catalog=YYY"  これで、サーバ内で実行すると、  「実行時エラー 3704  オブジェクトが閉じている場合は、操作は許可されません」  と表示され、リンクテーブルは生きているので、開けて、操作できてしまいます。    次に、accdeを他PCにて稼働させると、  「実行時エラーが発生したため、このアプリケーションの実行は中断されました。 アプリケーションを実行できません。システムはシャットダウンされました。」 と表示され、稼働しません。  どのようにすればよろしいのでしょうか?。

  • DB2とWin2003-アクセスとの接続

    AS400-DB2をWin2003のアクセスで検索したいんです IBMのクライアントアクセスというものをインストールすれば接続はできるらしいんですが,設定がわかりません(クライアントアクセスのCDは会社にあるらしいです) で,実は既にAS400-DB2の内容を帳票にするソフトが動いているんで,それを参考にしたいんですが,その中で '*** ファイルDSNを使用する場合(ODBCの登録は不要) Cn.Open "FILEDSN=" & App.Path & "\Database\S101D27F.dsn;" でMDBと接続しているらしいんです 今回もODBCは使いません このDATABASEフォルダーには S101D27F.mdb があって,リンクテーブルが入っています この S101D27F.dsn ってどうやって手に入れるんでしょうか? dsn と mdb は同じ名前が条件みたいですが・・ 帳票ソフトを作った人がもう会社にいないので困っています 言語はVB6です わかる方お願いします

  • PostgreSQLサーバー構築について

    おはようございます。PostgreSQLを使ったクライアントサーバーシステムの構築について 質問です。 PC(A)にPostgreSQLをサイレントインストールを行って、DBも作成し、正常にDBが起動している 状態とします。 このとき、PC(B)にODBCドライバをインストールし、ODBC接続の設定を自動で作成する部分 を作成しようと考えています。 1台のPCに入れたときにはホスト名をlocalhostとすることで問題はありませんでしたが、 ほかのマシンにインストールしたとき、どのサーバーで(どのIPで?)PosegreSQLが動いているのか クライアント側から取得する方法がありましたら、教えていただきたいと思います。 OSについてはどちらもWindows系OSを考えております。 よろしくお願いします。

  • win10homeのパソコンをdbサーバーにして

    win10homeのPCにmysqlをインストールしてDBサーバーとして、クライアントのwin10pro/homeのPCからaccessのODBC接続は可能でしょうか?

  • サーバーへのアクセスが出来なくなる。

    Windows2003serverをファイルサーバーにして、Win XP PROをクライアントにして接続していますが,いつのまにかサーバーへのアクセスが出来なくなっています、クライアントを再起動するとアクセスが出来るようになります、 同時使用ユーザー数20で設定、クライアント数は15台 ActiveDirectoryで、DHCPを使用、DNS使用、ブロードバンドルーターにてインターネット使用していますが,サーバーへのアクセスが出来なくなっている時でもネットは使用できています。 どこを調べたらよいでしょうか、よろしくお願いします。

  • クライアントからサーバのDBに接続できない

    いつも参考にさせていただいております。 【質問内容】 サーバにMySQLをインストールして、そのDBにクライアントからAccessなどをフロントエンドとして使いたいと思っています。 しかしODBCの接続テストでエラーになってしまいます。 知識不足は否めませんが、何か指摘がございましたらお願いします。 【環境】 ■サーバ側 OS:Windows2000Server DBMS:MySQL4.0.21 ■クライアント OS:WindowsXPSP2 ODBC:MySQL ODBC 3.51.04

    • ベストアンサー
    • MySQL
  • ADODBでサーバー・DBに接続するとは・・・

    初めまして、専門学校で技術の勉強をしている女子です。 ACCESSを使ってVBAでの課題をしている途中で、色々疑問が湧き、調べても解決できなくて、質問させてください(課題とは関係ないので課題を作りたいというわけではないですよ^^;)。 アクセスでカレントプロジェクトをADODBで接続して自データ(テーブル)を持ってくるのは、書籍などでもありますし、規定のコードを書いて実現できるのですが、よく聞く三層クライアントサーバーシステム(基本情報の勉強で知りました)では   【クライアント → サーバー → DB】 のようになっていると思います。例えばSQLSeverへの接続をするには   Set cn = New ADODB.Connection  CN.Provider = "SQLOLEDB"  CN.ConnectionString = "Data Source=111.199.---.+++;" & '←ここなんですが                "Initial Catalog=***;" &                "User ID=***" &                "Password=***" のように接続するようなのですが、どう解釈すればいいんだろう?と思っています。 ・疑問:これだとクライアントからSQLServerへ接続するIPアドレスしか指定していないので、サーバーOSに辿り着かないのでは・・?それともIISが自動でしてくれるのでしょうか? ・疑問:ODBCドライバという接続のしかたも調べましたが、やっぱり"Data Source="の指定を変えるだけで疑問はそのまま残ってしまいます。 自分なりに考えた事を書きたいと思います。 以下のことは私が勘違いや思い込みをしているのではないかと思っています。 なので正してくれる回答があればうれしいです。(ずうずうしくてスミマセン・・) ・何層だろうとサーバOSが、指定されているIPとDBを自動で判断し、このコードで接続できる。サーバOSの設定はDBAに詳しくなろう。 ・ではなくて、やっぱりサーバOSへの接続を記述して確立してから、改めてDBへの接続を記述しないとだめ。 ・VBAの記述はこれでよし、でもSQLSeverの設定でクライアントの許可をすればいいんだよ。 ・同じくVBAはこれでよい、でもサーバOSの設定でクライアントの許可を・・。 など考えています。何か根本的に理解していないことがありそうで、、また色々調べて本やネットをたくさん見ているために情報が整理できずに、間違った考えになっているのでは。と苦しんでいます。 実は先生や周りの友人に聞いても「たぶんそれでいいんじゃない?」とあやふやなんです(ーー;) そして私自身もIISやサーバOS、DBサーバの理解が足りていない事は実感しています。 現役でコードを書いている方や設定をされているかたにお話しを聞きたくて質問してみました。 面倒でなければ簡単なコードを記述して頂けるとありがたいです! ちなみに今はマイクロソフト群で勉強していますが、これをクリアしたらこんどはオラクルやMYSQLなどへの接続もしてみたいと思っています(学校に環境があるので^^)。 VISUAL STUDIOを使って(コードはVBですが)DB接続してみても、GUIで簡単にできすぎて、余計に理解ができませんでした。 長くなりましてすみませんでした。 なにかアドバイスや参考になることでも構いませんので、よろしくお願いします。 どんなに長い回答でも必ず読ませて頂きます!むしろ歓迎です!

  • SQL server2005で OLE DB接続できない。Native Clientのみ?

    ご存知の方、いらしたら教えていただければと思います。 現在は、S/C型の利用においてDBにAccess2000を使っていますが、様々なところで述べられている危険性に配慮して、SQLserverへの移行をしようとしています。 ちなみにSへはテーブルを配置し、CではExcelからADO/Jet OLE DBを経由して接続しています。 ユーザーにはフロントであるExcelを配布して利用しています。 さて本件ですが、SQLServerに移行しようと考えて、サーバにはExpress editionと接続コンポーネントを、クライアントには接続コンポーネントをインストールしたのですが、勝手が違うのでよくわからないです。 いろいろ試した挙句、ODBCからNative Clientとして接続すると可能であるところまでもってきましたが、もう一歩先に進めないで困っています。 つまり、目指すところは、ADO/OLE DB for SQL server を経由した接続です・・・ODBC経由だと、全てのクライアントに接続コンポーネントをインストールして回らなくてはならないので、大変です。 なにか考え方に誤りがあるのでしょうか、あるいはどこか注意すべきところがあるのでしょうか?よろしくお願いします。 ---以下、操作例--- メモ帳の拡張子をudlに変更してデータリンクファイルを作成。 これを開き、プロバイダータブにおいて MS OLE DB Provider for ODBC Driver を選択し、接続タブではサーバー名などを入力して接続テストすると可能である。 他方、プロバイダーにMS OLE DB Provider for SQL server を選択すると接続タブ完結できず、つまり接続できない。

  • MySQL、Accessを利用したDBの設計

    会社で現在の作業をシステム化し、将来的にはマーケティング処理も行う目的でMySQLを導入し、インタフェースをAccessにしてDB設計する方針になり、多少経験があるわたしが担当することになってしまいました。今、必死でMySQLを調べているのですが、基本的な理解ができていません。助けてください!! 1.MySQLとAccessを使うには会わせてODBC、MDACのインストールも必要のようですが、サーバ/クライアントのどちらに載せればいいのですか?他に必要なソフト(ミドル)ウェアはありますか? 2.MySQLの起動とありますが、サーバが立ち上がっている間自動で動作しているものではないのですか?(DBにアクセスする前にサーバに行ってMySQLを起動し、終わったら終了させるということですか?) 3.サーバ上のDBをクライアント側のAccessで操作するには、DBのアクセス権等何をどう設定する必要がありますか? 4.何十万件ものデータ処理をAccessで耐えられますか? 5.現在Access上にあるデータはテーブル毎にODBCにエクスポートするようですがクエリ(SQLソース)、リレーションシップ等はどう移植すればいいのですか?移植で注意すること(文字コード等)とかありますか? Access2002、MySQL3.23.51、phpMyAdmin2.2.6、WindowsXPを使ってます。 MySQL解説書には上記のようなことには触れていないのでわけがわかりません。ながくてばかばかしい質問かもしれませんが教えてください。よろしくお願いします。

  • DBへの接続

    現在、Eclipseを開発ツールとして、PHP言語とPostgreSQLでシステムを構築しているのですが 下記の問題が発生しており、困っております。どなたかお解かりであれば、 教えていただけないでしょうか ■問題  クライアントPCのEclipse上で、PHPのコンパイルをする際に、  pg_connect関数を使用しているところで、  「Call To undefined pg_connect 」のエラーがでています。  また、エラーがでているファイルをサーバー上置き、クライアント  PCからアクセスすると、ちゃんと起動しています。  その他、PostgreSQLのクライアントTOOLで、クライアントから  DBへ接続もできます。    問題としては、Eclipse上で何かしら設定をしないといけないのでしょうか?  それとも他に何か解決策があるのでしょうか? ■バージョン  PHP4.3.1  PostgreSQL7.4.2  Red Hat Linux 9

    • 締切済み
    • PHP