0

2 つのデータベース間でデータを同期する方法に関するアドバイスや提案を探しています。

最初のデータベースは、切断されたラップトップ (ネットワークまたはインターネット アクセスなし) で実行される SQL Server 2008 Express です。2 番目のデータベース (メイン) は、サーバー上で実行される VFP 9.0 です。

ユーザーがラップトップをネットワークに接続すると、同期プロセスが実行されます。

さまざまなデータベース エンジン以外に、考慮すべき次の項目があります。

  1. テーブルは必ずしも同じ構造である必要はありません
  2. 主キーが同じではありません (SQL Server の GUID と、多くの場合、VFP の文字フィールドの組み合わせ)
  3. 親子関係を尊重するために、テーブルの同期は特定の順序で行う必要があります
  4. SQL Server 側の一部の挿入では、VFP テーブルで新しい主キーを生成して同期する必要があります
  5. 一連の検証を行う必要があり、ユーザーからのフィードバックが必要になる場合があります
  6. すべてのレコードを同期する必要はない
  7. 同期後に SQL Server の一部のレコードを削除する必要があります
  8. 両側から削除されたレコードを考慮する必要があります
  9. VFP データベースで最小限の変更を行う必要があります

他にも忘れている点があるかもしれませんが、私が直面している課題については理解していただけると思います。現時点では、カスタム同期モジュールを構築する必要があると思いますが、いくつかのオプションを見落とした場合に備えて、先に進む前にあなたの意見を求め、これにアプローチする方法についていくつかのヒントを得ることができます.

私は Microsoft Sync Framework をすばやく調べましたが、私が持っているすべての制限と、まだ構築されている VFP クライアントがないという事実 (AFAIK) を考えると、それが大きな助けになるとは思いません。

フィードバックをお寄せいただきありがとうございます。

更新: ラップトップ アプリケーションは C# WinForm アプリケーションであり、SQL Server 2008 Express を使用しています。

4

2 に答える 2

1

状況と要件の複雑さから、VisualFoxProアプリケーションを作成する必要があると私は信じています。VisualFoxProはSQLServer2008データに簡単に接続します。コードの複雑さは、構文ではなく、要件に一致し、同期する必要のあるデータを特定することです。Visual FoxProの強みは、データ操作言語と、ほぼすべてのデータソース(ネイティブDBF、ODBC、ADO、およびXML)に接続する機能にあります。

SQL Serverは、VFP 9OLEDBドライバーを介してVFP9データを読み取ることができます。T-SQLストアドプロシージャを記述して、VFPデータを取得できます。ただし、ネットワークに接続されているラップトップをどのように認識するかはわかりません。

もう1つのアプローチは、SQL ServerXMLDiffgramを使用することです。私はこのアプローチについての想像力の範囲では専門家ではありませんが、それはあなたが研究できるものになるでしょう。

私の専門知識はVisualFoxProにあるので、逆の方が簡単だと思いますが、それは私だけです。プロジェクトのために持っているリソースのスキルセットを使用する必要があります。

VFPは、接続(DSN、ConnectionString)およびSQLパススルー(SQLConnect()、SQLExec()およびSQLDisconnect())、CursorAdapters、リモートビュー、またはこれら3つの組み合わせを含む任意の手法を介してSQLServerデータを読み書きします。

Visual FoxProプログラムは、ネットワークへの接続などのWindowsイベントも認識できます。アプリケーションを各ラップトップにインストールして実行し、Windowsイベントを認識することができます。イベントが発生すると、アプリケーションはSQL Serverデータベースへの接続を試みることができます(SQL Serverが使用できないネットワークまたは別のネットワークに接続している可能性があります)。

接続されると、データベースをチェックして同期するロジックを実行します。

ラップトップ上のVFP9データに書き込むアプリケーションをあまり制御できないようです。VFP 9データベースへのアプリケーションの書き込みを制御できる場合は、ラップトップ上のSQL Server Expressインスタンスに書き込むようにアプリを変更することを検討してください。その後、SQLServerレプリケーションを使用して同期を管理できます。ただし、簡単な作業ではありません。SQLServerレプリケーションは、リリースごとに改善されますが、DBAで脱毛を引き起こします。間違いなく、このルートを進むには多くの作業が必要です。

Rick Schummer Visual FoxPro MVP

于 2009-06-07T17:52:58.547 に答える
0

MS 同期フレームワークをもう一度見てみることをお勧めします。時々接続される C# クライアント アプリを Java/Oracle バックエンドと同期したい状況があります。C# クライアントに同期フレームワーク プロバイダーを使用し、バックエンドに KnowledgeSyncProvider の独自のカスタム サブクラスを実装できます。これにより、半分まで到達し、残りを適用するための適切なパターンが示されます。

于 2009-07-17T01:58:24.427 に答える