17

MS Access ファイルを DB として使用するデスクトップ製品として設計された製品があります。

現在、一部のユーザーは、数台の PC (2 台または 3 台としましょう) にインストールして、データベースを共有する必要があります。

MS Accessのファイルを共有フォルダに入れてPCからアクセスしようと思ったのですが… JETエンジンはマルチユーザーアクセス仕様なのですか?

これを行う際のヒントや注意事項はありますか?

編集: アプリは .net であり、データベースをストレージとして使用します (データベースをフロントエンドとして使用しません)。

4

13 に答える 13

26

このスレッドの回答には非常に多くの誤った情報が含まれているため、どこから始めればよいかわかりません。私は評判に4ポイントを費やし、誤解を招く情報や間違った情報を含む回答を投票しました.

  1. Jetデータベースエンジン(編集でOPが明確にしたため、ここで関係するのはこれだけです)は、デフォルトでマルチユーザーです-それはそのようになるようにゼロから構築されました.

  2. ネットワークが標準以下でない場合、Jet データ ストアの共有は非常に信頼性が高くなります。これは WAN ではなく、ワイヤレスでもないことを意味します。なぜなら、帯域幅は Jet が LDB ファイルを維持する (マルチユーザー ロック用) ために十分でなければならないためです。デフォルト設定)、および Jet は切断された接続から回復できないためです (これはワイヤレス環境では非常に一般的です)。

  3. Access がダウンする状況は、フロントエンドの Access アプリケーション MDB が共有されている場合です (このポスターには当てはまりません)。失敗する理由は、確実に共有できず、共有する理由がないものを共有しているためです。Access オブジェクトが MDB ファイルに格納される方法 (Access プロジェクト全体が、システム テーブルの 1 つの 1 つのレコードの 1 つの BLOB フィールドに格納される) のため、複数のユーザーがファイルを開くと、破損する可能性が非常に高くなります。私の推定では、Access/Jet ファイルの破損の 99.99% の原因は、Access フロント エンド (またはテーブルとフォーム/レポートなどをすべて 1 つの MDB に含む分割されていない MDB) を共有することです。

OPの質問に対する私の基本的な答えは、はい、Jetはそのサイズのアプリにとって優れたデータストアになるということです. ただし、ユーザー数が 25 人を超える可能性がある場合は、ユーザー数が多いほど堅牢なデータベース エンジンを使用してゼロから始める方がよい場合があります。

于 2009-04-19T21:53:43.327 に答える
7

これを行うことは完全に実行可能です。ただし、データベースをフロント エンド (フォーム、クエリ、コードを含む) とバック エンド (データのみ) に分割する必要があります。すべてのユーザーは、自分のコンピューターにフロント エンドを配置し、共有バック エンドにリンクする必要があります。

Jet は大量のネットワーク トラフィックを生成するため、速度は遅くなります。Microsoft はまた、開発ツールとしての Access を徐々に非推奨にしています。たとえば、Access 2007 のセキュリティ モデルは、Access 2003 よりもはるかに洗練されていません。

長年の Access 開発者として、私は徐々に Access から遠ざかっています。

于 2009-04-18T18:31:09.923 に答える
6

やめてください... Jet データベースは複数のユーザーをサポートできると主張していますが、アップサイジング ウィザードを使用して Access ファイルを Sql Express データベースに変換するのは非常に簡単です。そのデータベース ファイルは、ユーザーまたは管理者によって簡単にロックされる可能性があり、すべてのユーザーがデータベースを使用できなくなります。

...そしてSql Expressは無料です。そこから Sql Server またはその他の商用データベースの完全なインスタンスへのアップグレード パスは簡単です。

于 2009-04-18T18:22:32.080 に答える
6

信頼できるローカル ネットワーク上に 2 人または 3 人のユーザーがいる場合は、ネットワーク ドライブを頻繁にバックアップする限り問題ありません。

テーブル内のビット/ブール フィールドは避けてください。Jet には、テーブルへの複数アクセスによる厄介な破損の問題があります。

また、Access でのすべてのロックは楽観的であることに注意してください。ダーティ リードが発生することがあります。

MS Access は、次のようなスモール オフィスのシナリオ向けに設計されています。最小限のプログラミングでセットアップできる、クリティカルではないライト オフィスでの使用です。

データ ファイルがときどき破損することを予期してください。定期的にバックアップしてください。

于 2009-04-18T18:38:06.303 に答える
2

ACE/Jet エンジンは優れたソフトウェアですが、複数のユーザーをサポートするように設計されていますが、実際に複数のユーザーをサポートすることは、その長所の 1 つではありません。私にとって最後のストローは、エンジンからユーザー レベル セキュリティ (ULS) を削除した場所です。すべてのユーザーが同じ権限 (つまり、すべてのデータベース オブジェクトへの管理者アクセス) を持つ単純なデータベースの状況を想像できると思いますが、IMO はそうではありません。たとえば、MS SQL Server と比較して、複数のユーザーを適切にサポートします。

于 2009-04-20T08:23:36.387 に答える
1

ユーザーが必要な機能の半分を備えたアプリケーションを2倍待つことができる場合は、Accessを使用しないでください。

于 2009-04-20T19:46:50.927 に答える
1

はい、ネットワーク ファイル共有を介した複数の (つまり、ワークグループ サイズの少数の) ユーザーによるアクセスをサポートしています。ただし、ファイル共有アーキテクチャは、複数のユーザーによるファイルへの同時書き込みをサポートするには理想的ではありません。クライアント/サーバー データベース システム (SQL Server など) は、通常、パフォーマンス、セキュリティ、および信頼性が向上します。

于 2009-04-18T18:26:45.877 に答える
1

システム管理者として、マルチユーザーには Access を使用しないでください。Jeff Fritz の提案に従い、マルチユーザー アクセス用に設計されたデータベースを使用してください。あなたの小さなアプリは数人の間で共有されるだけだと思う​​かもしれませんが、年末までに 100 人のユーザーと 50 の新機能が含まれることを保証します。そして、それらがすべて VB/SQL Express ではなく Access である場合、Ops の担当者はある夜、家に押し入り、喉を切り裂くでしょう。

Access はクライアント サーバー アプリではなく、バックアップ/復元や自動化の機能はほとんどありません。言うまでもなく、インターフェイスと DB は非常に緊密に結合されています... したがって、これを Web アプリに変えたり、重大な変更を加えたりすると、世界は苦痛でいっぱいになります。

于 2009-04-18T18:35:45.170 に答える
1

非常に多くの一般的なソフトウェア エンジニアによって、マルチ ユーザーの状況で .mdb が破損するのを見てきました。多くの経験豊富なスペシャリスト Access 開発者が正しく理解できるのであれば、私がそう信じているように、私たちゼネラリストは何か間違ったことをしているに違いありません。 「もう二度と!」と叫びます。したがって、自分が経験豊富なスペシャリスト Access 開発者であると考えている (または開発者を見つける方法を知っている) 場合は、それを選択してください。しかし、軽量のバックエンドを探しているジェネラリストまたはカジュアルなユーザーの場合は、他の場所を探すことをお勧めします (SQL Server は良い IMO です)。

于 2009-04-20T08:43:20.537 に答える
0

dbロックファイル(.ldbなど)が存在するかどうかを確認するだけです。そこにある場合は、誰かがそのファイルにアクセスしています。そこにない場合、現在そのファイルにアクセスする人はいないので、続行できます。それ以外の場合は、そのファイル(.ldb)が存在しなくなるまで待ちます。

于 2012-05-30T16:26:42.327 に答える
0

Jet 3/3.5 が信頼できなかったということは、つらい経験から言えます。軽い負荷で頻繁にクラッシュするのを見ました。クラッシュが発生すると、データが破損する危険がありました。以前は、電源の問題、それに対するクライアントのクラッシュ (mdb にリンクされた UI も含む)、および LAN の問題に非常に敏感でした。最新バージョンの Jet の方が優れている可能性がありますが、少数のユーザーによる簡単なデータ入力以外の場合は、Sql Server に切り替えることが私の意見では明らかに正しい方法です。Sql Express は無料で、特に UI が Access ではなく .Net にある場合は、何も失うことはありません。

編集: Microsoft は、Jet 4 に頼るべきではないと考えています。

から: http://support.microsoft.com/kb/303528

Microsoft Jet は、負荷の高いサーバー アプリケーション、同時実行性の高いサーバー アプリケーション、または 24 時間年中無休のサーバー アプリケーションでの使用を想定していません。これには、Web アプリケーション、コマース アプリケーション、トランザクション アプリケーション、メッセージング サーバー アプリケーションなどのサーバー アプリケーションが含まれます。このような種類のアプリケーションの場合、最適なソリューションは、Microsoft Data Engine (MSDE) や Microsoft SQL Server などの真のクライアント/サーバー ベースのデータベース システムに切り替えることです。Microsoft Internet Information Server (IIS) などの負荷の高いアプリケーションで Microsoft Jet を使用すると、次のいずれかの問題が発生する可能性があります。 データベースの破損 IIS のクラッシュやロックアップなどの安定性の問題 ドライバーの突然の障害または永続的な障害IIS サービスの再起動が必要な有効なデータベースに接続するには

于 2009-12-30T03:39:29.370 に答える
0

Jet には、マルチユーザー シナリオをサポートするために必要な高度なロック ロジックがありません。アプリケーションのほとんどが読み取りで競合が少ない場合は、これを使用しても問題ありません。

Web サイトが多くのユーザーをサポートしているのを見てきましたが、Jet を選択するやむを得ない理由がない限り、SQL Express をお勧めします。

于 2009-04-18T18:26:43.053 に答える
0

ターミナル サーバーを使用する場合、パフォーマンスは非常に優れています。1 つのアクセス mdb で最大 50 ユーザーまでのソリューションをご用意しています。開発は本当に速く、展開は簡単です。

問題:

  • 誰でもデータをコピーできます mdb
  • アクセス権なし
  • 店舗限定手続き
  • 最適化 (圧縮と修復) データを使用しない場合にのみ可能 データベース
  • 2GBまで!
于 2009-11-10T21:58:38.897 に答える