2

MS Access DB を MySQL DB と同期するプロジェクトがありますが、実行中に DB がロックされるため、MS Access DB との間で読み書きするための最良の方法について疑問に思っていました。(同じ Access DB に対して読み取り/書き込みを行う他のアプリケーションがあるため、ロックする時間を最小限に抑えたいと考えています)。

選択する言語によって違いはありますか? 私は、C# と .NET を使用してアプリケーションを作成することに最も慣れています。

推奨事項/経験のある経験豊富な人はいますか?

4

3 に答える 3

3

アプリケーションがルックアップ目的でのみ使用するクエリを Access DB に格納し、クエリ プロパティで ReadOnly として格納します。次に、アプリケーションでこれらの ReadOnly クエリをクエリするようにします。これにより、不要なロックが防止されます。

アプリケーション内の更新および挿入 SQL ステートメントを短くシンプルに保つことで、ロック時間もある程度制限されます。

于 2012-12-03T15:23:08.823 に答える
1
  1. テーブルに主キーが含まれていない場合。1つ追加し、「Id」という名前を付けましょう

  2. 変更を保存するテーブル「sync_log」を作成します。

    • ターゲットDBに適用する「SQL」の1つの列。
    • この「SQL」の実行ステータスの1つの列。(保留中、終了)
    • この「SQL」の時間の1つの列で、SQLを元の順序でターゲットDBに適用できます。
  3. 作成、更新、削除のトリガーを作成

    クレート: 1つの行を作成すると、トリガーは次の行を別のテーブル「sync_log」に挿入します

    「テーブルT値(CA、CB、CC、CD)に挿入」

    削除: 1つの行を作成すると、トリガーは次の行を別のテーブル「sync_log」に挿入します

    「Id=99であるテーブルTから削除する」

    更新:同様です。主キー「Id」でターゲット行を識別します

  4. アプリでテーブル「sync_log」をポーリングし、新しい「保留中」のSQLをターゲットDBに適用してから、「sync_log」のSQLのステータスを「finished」に更新します。

これは一方向の同期であり、別の方法の同期も同様です。

if(Microsoft Accessプロジェクトを使用している場合)then {http://office.microsoft.com/en-au/access-help/create-a-trigger-adp-HP003085415.aspx}else{アクセスマクロイベントはトリガーに似ています。http://blogs.office.com/b/microsoft-access/archive/2009/08/13/access-2010-data-macros-similar-to-triggers.aspx }

于 2012-12-07T16:03:16.103 に答える
1

言語はそれほど重要ではないと思います。.NET 環境では C# または VB を使用できます。2 つのデータベースのリアルタイム同期または時間外 (たとえば毎日) の同期を計画していますか?

同期の 1 つの方法は、テーブルのデータ ダンプをテキスト ファイルに作成し、それらを適切にインデックス付けされたテーブルにロードしてから、更新されたレコードを検索し (データ アクセス クエリを使用)、新しいレコードを検索して (外部結合を使用)、それらを追加することです。データストアに。

于 2012-12-03T15:44:39.697 に答える