web-dev-qa-db-ja.com

一部のテーブルの出荷をログに記録する

間違った用語を使用している可能性が高いことはわかっているので、間違った用語を使用している場合は修正して、検索を改善してください。

クライアントのサイトには非常に大規模なデータベースがあり、インターネットを介してオフィスのサーバーに送信されるテーブルの一部の最新のコピーが必要です。データベース全体(現在のソリューション)のログ配布を行うための帯域幅要件が高すぎるため、いくつかのテーブルのみをコピーしたいと思います。また、サーバーはインターネットからアクセスできず、管理者はレプリケーションを実行したくないため、サーバーへの直接レプリケーションは問題外です(詳細は後で説明します)。

私たちが持っていた考えられるアイデアの1つは、同じサーバー上の別のデータベースに必要なテーブルで何らかの形式のレプリケーションを実行し、その2番目に小さいデータベースのログ配布を行うことですが、管理者はクライアントがレプリケーションを中断したことを懸念しています(ただし、過去に私たちの内部ネットワーク)を使用しており、可能であればそれを避けたいと考えています。

任意の推奨事項をいただければ幸いです。何らかの形式のレプリケーションを使用することが唯一の解決策である場合、私はレプリケーションに反対していません。経営陣にそれを行うよう説得するための説得力のある議論が必要です。

これは、Sql2005またはSql2008のいずれかを実行している複数のサイトで設定する必要があります。データを復元するために両方のバージョンを用意しているため、問題はありません。

ありがとうございました。

2

Microsoft Sync Frameworkを調べましたか?これは、SQL Serverおよびその他のデータストアをサポートし、それらのデータストアのサブセット(特定のテーブルなどのみ)の同期をサポートするMicrosoftデータ同期テクノロジであり、もちろん、Microsoftはそれを多数のテクノロジスタックにうまく統合しようとしています。

関連する StackOverflowの質問、「テーブルのサブセットのみを同期できますか?」 です。長すぎます。答えを読んでいないのははい、できます。

これにより、独自のソリューションを実装するよりも大幅に時間を節約できます。

1
Aaron Friel

あなたはあなたが利用できる2つのオプションをほぼカバーしました。ある種のSQLService Brokerソリューションなどを構築したいが、それでも2つのサーバー間の接続が必要な場合を除きます。あなたが説明したことに基づいて、彼らのサーバーとあなたのサーバーの間のSQL Serverレプリケーションは、問題の正しい解決策になるでしょう。

0
mrdenny

私が考えることができる唯一のことは、あなた自身の解決策を転がすことです。これは私がすることです:

テーブルのbcp outダンプを実行するサーバーで実行されるバッチを圧縮し、FTPに配置します。

オフィスで実行されている2番目のバッチは、FTPを定期的にチェックし、新しいファイルが見つかった場合は解凍し、解凍したファイルのDELETE FROM [tablename]を実行してから、bcp inを実行します。

0
Mark Henderson

それらがレプリケーションを壊す可能性がある場合、それらはおそらくあなたが設定した他のものを壊す可能性があります。私はおそらくトランザクションレプリケーションまたはマージレプリケーション(必要に応じてログ配布を伴う)のいずれかを使用し、サブスクライバーのセットアップ手順をスクリプト化して、F5を数回押すだけで問題を修復できるようにします。

0
db2