2009-03-01 14 views
0

私は、ローカルにホストされているクライアントのSQLデータベースからホストされているサーバーデータベースにデータをコピーする必要があるシステムを作成しています。ローカルデータベースのほとんどのデータは、実際に送信する必要があるデータの量を減らすために最適化されていますが、ライブデータにコピーされます。ローカルデータベースからリモートデータベースへのデータコピー

このデータをあるデータベースから他のデータベースに送信する最適な方法は何ですか。現時点では、私はいくつかの可能性があるオプションを見ることができますが、それらのどれもが主要な候補者として際立っていません。

  • レプリケーションは理想的ではありませんが、ホストされた環境で使用するバージョンのSQLではサポートされていません。我々はXMLとして必要とし、大量にインポートするサーバーに転送するデータのエクスポートデータ
  • を送信するために遅いと多少安全でない方法
  • ウェブサービス - サーバ、直接データをコピーするリンク

コピーされたデータは、IDフィールドなしでテーブルのコピーに格納されるため、その点で違反のないデータの挿入/更新が可能です。このデータ転送は、データベースレベルで行う必要はありません.netやその他の施設から行うことができます。

詳しい情報

更新の頻度は、レコードが更新される頻度に完全に変化します。しかし基本的な考え方は、レコードが変更された場合、ユーザーはそれをライブデータベースに公開できるということです。あるいは、変更を記録し、構成可能な周波数でバッチで送信します。

現時点では、コアテーブル(製品カタログ)のテーブルあたり約4000行ですが、これはそれぞれ独自の製品を持つクライアントに依存していますカタログには、100から1000までの製品があります。明確にするために、各クライアントは個別のローカル/ホストデータベースの組み合わせにあり、1つのシステムに結合されていません。

個々のアイテムを公開するだけでなく、必要に応じてデータを完全に再同期する必要があります。

ローカルサーバーからコピーされるデータの一部はセカンダリデータベースに格納されるため、2つのデータベースのデータを1つのライブデータベースに効率的にマージします。

+0

開始時に 'SET IDENTITY INSERT ON'コマンドを発行することで、IDフィールドを保持して他のデータベースに挿入することができます。あなたが終わったらそれをオフにすることを忘れないでください。 – tomfanning

答えて

0

最終的に私は、変更ログテーブルへのデータ変更をキャプチャするトリガのセットを選択しました。このテーブルをポーリングし、遠隔地で実行されているWebサービスへの提出用のXMLファイルを生成するアプリケーションがあります。

0

どのくらいのデータについて話していますか?いくつの「クライアント」DBがそこにありますか?どのくらい頻繁に起こる必要がありますか?これらの質問に対する答えは、あなたが取るべき道を大きく変えるでしょう。

0

この問題には、ほぼ無限の解決策があります。それを絞り込むために、あなたの要件と優先順位について少し教えてください。

バルク操作は、おそらく広範なシナリオを対象としており、リストの先頭に追加する必要があります。

0

データ変換サービス(DTS)を使用することをお勧めします。追加するDTSパッケージと、データを再作成するためのDTSパッケージを作成することができます。

コードからDTSパッケージ操作を呼び出すことができますので、アプリケーションから呼び出すことができるパッケージを制御するためのラッパーを作成することができます。

1

まあ、私は偏っています。私は認めなければならない。私はこれを行うにはSQLの比較のために砲撃にあなたを催眠にしたいと思います。私はすべてのオープンエンドの恐ろしさの中でこの種の問題に直面してきました。私はSQL Compareのコピーを手に入れました。 SQL Compareは実際にはデータベースを同期させるソフトウェアの愚かな名前です。右のノブやボタンとともに作業中のプロジェクトを取得したら、コマンドラインからも行います。もちろん、これはほんのわずかなデータベースでしか行うことができませんが、実際には私が公表したくないツールです。

私の唯一の要件は、多くのクライアントから製品カタログを収集することです。それらがすべて別々のテーブルにある場合は、すべてが問題ありませんが、すべてが同じテーブルにある場合は、これが複雑になります。

関連する問題