質問

ネットワーク化されたMS Accessデータベースに保存されているバックエンドデータに依存するMSアクセスベースのシステムがあります。ランダムネットワークの問題が発生すると、これらのデータベースが破損する場合があります。そのため、コンパクトで修理を日常的に発射できるようなプロセスを追加する必要があると考えました。

問題は、このデータベースが常に複数のユーザーが使用していることであり、データベースが使用されていない場合に特定の時間が利用可能になることを知る保証はありません。したがって、私の質問は次のとおりです。

1)フロントエンドアプリ(MS Accessまたは.NET)がそれに接続しようとしたときにデータベースがC/R'EDになっている場合、どうなりますか?それは大丈夫ですか?

2)バックエンドMSアクセスデータベースの使用準備が整うまで、フロントエンドアプリをすべて待つための優れたソリューションとして、何をお勧めしますか?フロントエンドアプリに必要な変更が少ないほど良いです。

ありがとうございました!

役に立ちましたか?

解決

これは、アクセス開発者の間で比較的頻繁にアスクされた質問です。

それには2つの部分があります:

  1. データベースをバックアップしてコンパクトするコード。これをサーバー上でスケジュールします。

  2. フロントエンドに入れたコードは、#1のコードを実行できるようにする時点で全員を自動的にログアウトします。

一般的に、オフィスは現地時間の午前8時から午後6時までのみ営業しているため、通常のファイルに備えて、バックアップとコンパクトでバックアップとコンパクトなバックアップとコンパクトにバックアップを使用できるように、真夜中頃に全員を追い出すことは一般に安全です。たとえば、午前2時に発生する可能性のあるサーバーバックアップ。

バックアップ/コンパクトのVBScriptは比較的簡単に書き込みます。あなたがそれで助けが必要な場合は、尋ねてください。

フロントエンドの場合、アプリが開いているときに開いたときに、真夜中にキックインしてアプリを閉じるように設定されている隠されたフォームが必要です。それであなたがどれほど詳しく知りたいかによって異なります。潜在的な落とし穴は、ユーザーがレコードを開始し、保存できない状態にある場合です(何らかの理由で検証ルールに失敗します)。それは複雑になる可能性があります(エラーをトラップし、切り株のレコードを元に戻してからシャットダウンする必要があります)が、ユーザーが保存できないレコードを作成できないようにアプリを設計する方が良いです。

重要なポイントは、この両端を計画し、バックアップ/コンパクトが実行されている時点に残っている接続をスケジュールしてシャットダウンする必要があることです。

他のヒント

私が理解していることから、データベースを自動的にコンパクトにすることは悪い考えです。コンパクトになる前に回復可能なエラーがあった場合、その後完全に読み取れないデータベースが表示される可能性があります。バックアップからの復元が必要です。

1>フロントエンドが圧縮/修理されているデータベースにアクセスしようとした場合、フロントエンドクライアントはデータベースが利用できず、不意に排出されていると言われていると思います。このためにエラーハンドラーを書くことができると思いますが、それは私が提供するよりも多くのVBA知識を必要とします。

2>可能な場合は、複数のクライアントを扱う場合、予備のWindowsボックスでMicrosoft SQL Server Expressであっても、バックエンドのRDBMSのパフォーマンスが常に向上します。データは、「悪いこと」が発生したときに破損しない可能性が高くなります(ネットワーク切断、クライアントのロックアップなど)。トランザクションを備えたRDBMSは通常、これに適したルートです。

これに対する解決策に関しては、私はプログラムでアイデアが不足しているのではないかと心配しています。ごめん。

アクセスセキュリティに関するGarry Robinsonの本は、この問題を扱っています。読む価値があります。 GarryのWebサイト(VB123.com)では、各接続されたワークステーションに警告を与えるものを含む、多くの管理およびセキュリティツールを含むツールボックスを販売しています。

本は次のとおりです。

Real World Microsoftアクセスデータベースの保護とセキュリティ

企業環境でAccessを使用している場合、それは必須であり、読む必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top