0

2つのデータベース間でデータを同期する方法に関するアドバイスや提案があります。SQL Server 2008 ExpressとVFPテーブルの同期

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

ユーザーがネットワーク上でラップトップに接続すると、同期処理が必要になります。

異なるデータベースエンジン以外

、私は考慮に入れるには、次の項目があります。テーブルは必要ない

  1. を主キーは同じではありません
  2. 同じ構造を持っている(GUIDでSQL ServerとしばしばVFPの文字フィールドの組み合わせ)
  3. 親子関係を尊重するために、テーブルの同期化を特定の順序で実行する必要があります。
  4. SQL Server側に挿入すると、新しいプライマリキー生成して同期させる必要があります
  5. VFPテーブルにronised検証の束がなされなければならないと、ユーザからのいくつかのフィードバックが時々いないすべてのレコードがSQL Server上のいくつかのレコードがsyncronisation後に削除する必要が
  6. 同期させる必要が
  7. を必要としています
  8. を考慮に入れる必要が
  9. 最小限の変更は、VFPデータベース上で実行する必要があり、両方の側からレコードを削除

あり、私は今forgottingよ、おそらく他のポイントがありますが、私THIあなたは私が直面する挑戦のアイデアを得る。今私の推測では、カスタム同期モジュールを構築する必要があるということですが、いくつかのオプションを見過ごした場合や、これにどう対処するかについてのヒントを得るために、あなたの意見を聞きたいと思います。

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

フィードバックにご協力いただきありがとうございます。

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

答えて

1

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

SQL Serverは、VFP 9 OLE DBドライバを介してVFP 9データを読み取ることができます。 VFPデータを取得するためにT-SQLストアドプロシージャを記述することができます。それはどのようにノートパソコンがネットワークに接続されている認識するか分からない。

もう1つの方法は、SQL Server XML Diffgramsを使用することです。私は、このアプローチでは想像力を伸ばしても専門家ではありませんが、あなたが研究できるものになるでしょう。

私の専門知識はVisual FoxProにあるので、別の方法をとっても簡単に見つけることができますが、それは私だけです。あなたはプロジェクトのために持っているリソースのスキルセットを持っていなければなりません。

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

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

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

ノートパソコンのVFP 9データへのアプリケーション書き込みを制御していないような音がします。 VFP 9データベースへのアプリケーション書き込みを制御している場合は、ラップトップのSQL Server Expressインスタンスに書き込むようにアプリケーションを変更し、SQL Serverレプリケーションを使用して同期を管理できます。しかし、SQL Serverのレプリケーションは、各リリースでよりうまくいく一方で、DBAで脱毛を引き起こします。間違いなく、このルートに行く多くの仕事。

リックSchummer Visual FoxPro MVP

+0

お返事ありがとうございます。申し訳ありませんが、ラップトップアプリケーションはC#WinFormアプリケーションであり、SQL Server 2008 Expressを使用しています。私はVFPを10年以上使っていたので、私はVFPをよく知っていますが、私たちはいろいろな理由でそれを離れようとしています。 – izokurew

+0

時には別の言語に移動すると、操作が簡単になることがあります。 VFP向けのSednaリリースでは、Visual Studio 2005用のDDEXプロバイダが出荷されました(2008年には動作すると思いますが、私には言及しません)。これにより、C#コードでデータに簡単にアクセスできるようになります。 –

0

私はMSの同期フレームワークで別の見てみることをお勧めします。時折接続するC#クライアントアプリケーションをJava/Oracleバックエンドと同期させたいという状況があります。 C#クライアント用の同期フレームワークプロバイダを使用し、バックエンド用の独自のカスタムサブクラスのKnowledgeSyncProviderを実装できます。これはあなたの半分のところにあなたを取得し、残りの部分を申請するための良いパターンを示します。

関連する問題