同じ構造を持つ2つのデータベースがあります。1つはローカルマシン上に、もう1つは会社のサーバー上にあります。決められた時間ごとに、ローカルDBのデータをサーバーDBと同期する必要があります。
私はこれを行う方法についての一般的なアイデアを持っています-サーバーDBにない情報を何らかの形で「マージ」するスクリプトを作成し、このスクリプトをサーバーのスケジュールされたジョブとして実行します。しかし、私の問題は、私がこれをあまり経験していないという事実にあります。
SQL Server Management Studioは、これを行う簡単な方法(ある種のウィザード)を提供し、この種のスクリプトを生成しますか?これはゼロから構築しなければならないものですか?
私はいくつかの基本的なグーグル検索を行い、「レプリケーション」という用語に出くわしましたが、完全には理解していません。むしろ、実際にこれを行ったことがある人や、この種のことを説明してくれる人からの意見を聞きたいと思います。
ありがとう。
レプリケーションはこのための適切なオプションのように聞こえますが、いくらかのオーバーヘッドがあります(技術的なオーバーヘッドではありませんが、知識はそれをサポートする必要があります)。
別のSQL ServerオプションはSSISです。 SSISは、ユーザーがしようとしていることを設計するためのグラフィカルツールを提供します。 SSISパッケージは、必要に応じてSQLステートメントも実行できます。 SSISパッケージは、SQL Serverジョブから開始できるため、スケジュールすることができます。
ソリューションを選択するときは、同期ルールの複雑さを考慮する必要があります。たとえば、データをマージするときに、重複キーなどの競合を解決することは困難でしょうか。ルールが単純な場合、SQLスクリプトは簡単に作成できます。ただし、複雑な競合ルールは、スクリプト(またはレプリケーション)で実装するのが難しい場合があります。
残念ながら、SQL Server Management Studioはこの方法ではあまり提供していません。
優れた商用製品のいくつかを真剣に見る必要があります。
Red Gate Softwareの SQL Compare および SQL Data Compare -優れたツール、強くお勧めします!ライブデータベースを別のデータベースのバックアップと比較して、データを同期することもできます。
ApexSQLの SQL Diff および SQL Data Diff
彼らはすべてお金がかかります-しかし、あなたがそれについて真剣であり、あなたがあなたの毎日のルーチンでそれらを使用する場合、彼らはすべてのダイムの価値が十分にすぐに支払われます。
SQL Server 2008にある唯一の「無料」オプションは、2つのサーバー間にリンクを作成し、データを転送するために MERGEステートメント (SQL Server 2008の新機能)のようなものを使用することです。これは構造的な変更には機能せず、2つのサーバー間でライブ接続を行うことのみに制限されます。
トランザクションレプリケーションについて必ず読んでください。あなたが説明した状況にぴったりのように思えます。開始するためのリンクをいくつか紹介します。
必要なのは ピアツーピアトランザクションレプリケーション です。これにより、両方のデータベースでデータを更新できますが、連続した変更のマージによってデータの同期が維持されます。これはあなたが望むものに近いマッチですが、かなり高価なオプションです(両方のサイトでEnterprise Editionが必要です)。もう1つのオプションは Bidirectional Transactional Replication ですが、これには2つのEEライセンスも必要なので、同じ費用でピアツーピアを展開する方が簡単だと言います。
より予算にやさしいオプションは トランザクションレプリケーションの更新可能なサブスクリプション ですが、更新可能なサブスクリプションは非推奨になりつつあり、負け馬にお金を賭けます。
別のオプションは Merge Replication を使用することです。最後に、「ローカル」データベースが非常にモバイルである場合、 Sync Framework があります。
allこれらのオプションには、会社のサーバーDBからの設定と協力が必要です。
優れたサードパーティ製ツールがいくつかあります。私にとっては、 xSQL Data Compare が常にこのトリックを行ってきました。また、比較は高度に変更可能であるため、ほぼすべてのデータ比較またはデータ同期シナリオに適しています。お役に立てれば!