SQL Server 2008レプリケーション(再初期化の回避)
-
05-07-2019 - |
質問
現在行っている方法よりも、レプリケーションを処理するより良い方法があるかどうかを判断しようとしています。
基本的に2つのことを判断しようとしています:
- 既存の列をテーブルからレプリケーションに追加する方法はありますか 全体を再初期化せずに 出版物
- すべてではなく特定の記事を選択するだけで再初期化できますか 出版物内の記事の数
(私はレプリケーションに少し慣れていない...スピードを上げようとしているので、私の用語が意味をなさない場合は謝罪する)
現在、約30のパブリケーションがあるため、再初期化する必要がある場合、影響は最小限に抑えられます。テーブルのいくつかは非常に大きいためです。複数の出版物のみを希望します。
どんなアイデアでも大歓迎です。
更新
記事に列を追加しようとすると、次のメッセージが表示されます。
1つ以上を変更しました すべてを必要とするプロパティ 再初期化されるサブスクリプション。 これらの変更を保存するとそれぞれマークされます 自動をサポートするサブスクリプション 再初期化される再初期化 次回スナップショットから ディストリビューションエージェントが実行されます。あなたが実行する必要があります 生成するスナップショットエージェント スナップショット。
すべてのサブスクリプションを再初期化しないようにします。トランザクションレプリケーションを使用しています...再度、すべてのサブスクリプションを再初期化せずに既存のパブリケーションに既存の列を追加します。
解決
どのようなレプリケーションですか?スナップショット、マージ、Transacitonal、ピアツーピア?
1)はい。 出版物データベースのスキーマ変更の作成を参照してください。
- 新しい列をテーブルに追加し、 その列を既存の パブリケーション、ALTER TABLEを実行 ADD。デフォルトでは、 その後、列はすべてに複製されます サブスクライバー。列は許可する必要があります NULL値またはデフォルトを含める 制約。
- 既存の列を 既存の出版物、使用
sp_articlecolumn
(Transact-SQL)、sp_mergearticlecolumn
(Transact-SQL)、 または出版物のプロパティ- ダイアログボックス。
2)レプリケーションの種類によって異なります。 サブスクリプションの再初期化を参照してください:
サブスクリプションの再初期化には、 1つ以上の新しいスナップショットを適用する 1人以上のサブスクライバーへの記事: トランザクションおよびスナップショットレプリケーション 個々の記事を 再初期化;マージレプリケーション すべての記事が必要です 再初期化。