私は現在、レガシー MS Access アプリケーションの開発と保守を担当する 4 人のチームに所属しています。
アプリケーションは非常に大きく、何百ものフォーム、レポート、クエリ、およびテーブルがあります。
現在、フロント エンドは約 7 つの mde コンポーネントに分割されています。それぞれのコンポーネントは、基本的にはそれ自体がアプリケーションであり、基本的には単なるメニュー GUI である共通のフロント エンドによって結合されています。
リンク テーブルを使用して、コード自体で OpenDatabase(C:\access.mdb) 呼び出しを使用して、このフロント エンドを MS Access バック エンドに接続します。このアプリケーションはしばらく前から存在していたため、DAO を使用して Access 97 バックエンドに接続しています。
これは、アプリケーションのすべてのユーザーが、変更を行うためのデータベースの独自のローカル コピーを持っていることを意味します。一度に 1 人だけがデータを操作できるように、慎重に変更管理された環境を用意しています。マスター データベースを次の人に渡す前に、すべての変更を検証する必要があります。
この変更管理環境は控えめに言っても息苦しいものであり、1 人のユーザーによるアクセスが実行不可能になる時間枠内で、より多くのデータ変更を行う必要がすぐに出てきます。
したがって、マルチユーザー アクセスに移行する必要がありますが、マルチユーザーとは約 4 人だけを意味します。この人たちはおそらく同じオフィスに物理的に配置されていないため、何らかの形のリモート db 接続が必要です。
1 年か 2 年のうちにアプリケーション全体が作り直され、フロントエンドとバックエンドの両方が MS Access から離れる可能性があります。ただし、できるだけ早くマルチユーザー アクセスが必要です。
では、至福のマルチユーザーへの最短の道は何でしょうか?
検討中の提案には次のものが含まれます。
- MS Access が通常のネットワーク ドライブにアクセスしていると認識するように VPN を設定します。これは遅くなるようで、VPN の信頼性が十分かどうかはわかりませんが、いずれにせよ、これは一時的な解決策にすぎません。
- mdb バックエンドを、SQL Server などのマルチユーザー リモート使用を目的としたものに変換します。これを迅速かつ簡単に行う方法がわからないだけです (たとえば、フィールド検証ルールに依存しています)。また、他のアプリケーションが同じ .mdb ファイルをデータ入力として受け入れるため、MS Access 形式に戻す必要があると思われます。
- 1人か2人で数ヶ月でできることなら何でも。
編集: 以下のコメントに応答します。
アプリケーションによって処理されるデータは、安全性が非常に重要なデータです。めったに変更されず、エクスポートする前に論理エラーがないことを示すために検証する必要があります。実際には、データはアプリケーション自体よりも厳しい制限を受けています。
データは重要な方法で相互に関連しています。そのため、複雑なビジネス ロジックが原因で、あるテーブルのレコードを変更すると、別のテーブルのレコードが無効になる場合があります。そのため、現時点では、mdb データ ファイルの 1 つのコピーがマスター データベースとして指定されています。一度にマスターを持つのは 1 人だけです。それを変更したい場合は、現在それを持っている人からそのデータベースを取得する必要があります。データが変更されることはめったになく、これが発生するのに十分な時間があるため、これは通常問題になりません。
しかし、大きな変化が迫っていますが、この方法で作業するのに十分な時間が与えられていません。一度に複数の人がデータに取り組む必要があります。ネットワーク ドライブで mdb ファイルを共有し、同じオフィスにいる複数の人がほとんどまたはまったくリスクなしにそのファイルで作業できることを認識していますが、データを同時に処理するには、さまざまな会社の人が必要です。 . 私が理解しているように、VPN を設定してデータを共有するのは悪い計画です。
バックエンドを MS Access から変更し、SQL サーバーのようなものに移行する必要があると思います。しかし、この方法でスキーマを変換するのはどれほど簡単でしょうか? MS Access テーブルの検証規則は SQL Server でどのように表されますか?