1

私はここ数年、私の会社で使用されているネットワークアプリケーションを開発しました。当初は、ユーザーや権利などに関する情報を管理していました。時間の経過とともに、他の機能とともに成長しました。それは、私がテーブルを持っているところまで成長しました。たとえば、10〜20列、さらには20,000〜40,000レコードです。

アクセスはマルチユーザー環境には適していないという話を聞き続けています。2つ目は、ネットワークを介してテーブルからいくつかのレコードを読み取ろうとすると、テーブル全体をクライアントにプルする必要があるという事実です。これは、サーバー側にデータベースエンジンがなく、クライアント側でデータフィルタリングが行われるために発生します。

このプロジェクトをSQLServerに移行しますが、残念ながらこの場合は移行できません。

Access Databaseを使用するよりも信頼性の高いソリューションがあり、それでも単一ファイルのデータベースシステムを使用できるかどうか疑問に思いました。

dBaseIVを使用した非常に巨大なシステムがあります。私の知る限り、それは完全にマルチユーザーのデータベースシステムです。

たぶん、Accessの代わりにそれを使用するのは良いでしょう?私が確信できないのは、dBaseIVがAccess2000よりもはるかに古いという事実です。それが良い解決策になるかどうかはわかりません。

多分他のいくつかのオプションがありますか?

4

8 に答える 8

4

記録のために、この回答は私が回答した別の質問からコピー/編集されています。


アリスト、

Accessを一元化されたデータストアとして使用できます。

マルチユーザーシナリオ(少なくとも最大15〜20ユーザー)でアクセスが停止するというのは、単純に真実ではありません。

Accessデータファイルを使用した適切なバックアップ戦略が必要なのは事実です。ただし、最後に、SQLServerを使用した適切なバックアップ戦略が必要であることを確認しました。(SQL Serverは「ホット」バックアップを実行できますが、Accessは実行できないという非常に重要な注意事項があります。)

つまり...データストアとしてアクセスを使用できます。次に、ネットワークを制御する会社の政治を乗り越えることができれば、SQLServerを使用するように現在のアプリケーションを改良する方向に進むことができます。

最近、データベースを2つのファイルに分割する方法に関する別の質問に答えました。ここにリンクがあります。 フロントエンドMDEの作成

データベースファイルをフロントエンドに分割する:バックエンドは、パフォーマンスを向上させるための一種の鍵です。(David Fentonが述べたように、あなたはかなり良いデザインを持っていると仮定してください。)

最後にもう1つ言及すると、あなたの会社が他の展開オプションを提供しないのはばかげています。確かに、「アプリケーションなしで人生を想像する」ことができる力を持った人がそこにいます。私はあなたがあなたが想像するよりも多くの力を持っているかどうか疑問に思っています。

セス

于 2009-08-15T13:23:53.953 に答える
4

Access に関する次の有益なスレッドをお読みになることをお勧めします。

于 2009-08-14T22:38:02.063 に答える
2

ユーザー間で共有されるAccessデータベースで発生する問題は、ファイルベースのデータベースでも同じです。
読み取りは大量のデータをメモリにプルし、書き込みはある種のファイルロックで保護されます。あなたの環境の下では、あなたが持っているものを最大限に活用しなければならないように思えます。

于 2009-08-14T22:56:04.273 に答える
2

「2 つ目は、ネットワーク経由でテーブルからいくつかのレコードを読み取ろうとすると、テーブル全体をクライアントにプルする必要があるという事実です。」

実は違う。これは、Access 内のデータベース エンジンである Jet がどのように機能するかを理解していない人々によって広められたよくある誤解です。すべてのレコードのプルダウン、または過剰な数のレコードは、選択基準またはインデックスでの並べ替えで使用されるすべてのフィールドを持っていないために発生します。また、yes/no aka boolean フィールドのインデックスを作成すると、一部のクエリで大きな違いが生じることもわかりました。

実際に起こることは、Jet が必要なインデックス ページとデータ ページをダウンさせることです。これは、データベース エンジンが作成するよりもはるかに多くのデータですが、テーブル全体ではありません。

また、さまざまなテーブルに 600K および 800K のレコードを持つクライアントがあり、パフォーマンスは問題ありません。

于 2009-08-15T19:52:06.290 に答える
2

かなり頻繁に使用される Access データベース アプリケーションがあります。以前は、問題なく同時に 23 人のユーザーが使用していました。それらが同じレコードにアクセスしない限り、問題はありません。

いくつかの異なる部門で使用および更新されるフォームがいくつかあります。たとえば、13 の異なるタブと各タブに 10 ~ 20 のフィールドを含む見積もりフォームがあります。ユーザーは通常、議事録を編集したり情報を探したりするために 1 つのレコードを使用します。書き込みの競合を避けるために、フィールドが変更されるたびに以下の関数を呼び出します。新しいレコードが入力されていない限り、更新されます。

Function funSaveTheRecord()
   If ([chkNewRecord].value = False And Me.Dirty) Then
      'To save the record, turn off the form's Dirty property
      Me.Dirty = False
   End If
End Function

PDC.mdb <-- フロント エンド、ユーザーのマシンに保存。すべてのユーザーは独自のコピーを持っています。PDC_be.mdb にあるテーブルへのリンク。すべてのフォーム、レポート、クエリ、マクロ、およびモジュールが含まれています。シフト キーのバイパスのオン/オフを切り替えるために使用できるフォームを作成しました。私だけがアクセスできます。

PDC_be.mdb <-- サーバーに保存されるバックエンド。すべてのデータが含まれています。そこに含まれるフォームと VBA のみが、シフト キーのバイパスのオン/オフを切り替えます。私だけがアクセスできます。

Secured.mdw <-- サーバーに保存されているセキュリティ ファイル。

次に、セキュリティ ファイルをフロント エンドに結び付け、ログイン資格情報も提供するショートカットをユーザーのデスクトップに配置します。

このデータベースは、6 年以上にわたってエラーや破損なしで実行されています。

于 2012-04-03T13:11:20.710 に答える
1

アクセスはフラットファイルデータベースシステムではありません!リレーショナルデータベースシステムです。

于 2009-08-14T22:21:38.617 に答える
1

SQL Server Expressを使用できませんか?それ以外の場合、MySQLは優れたデータベースです。

しかし、何もインストールできない場合(後でではなく、早くそれらの政治に入る必要があります-または後でなります)、既存のデータベースシステムを使用してください。

基本的にAccessでは、同時に接続されている5人以上を処理することはできません。そうしないと、破損します。

于 2009-08-14T22:21:53.733 に答える