SQL Server 2005 とトランザクション レプリケーションを使用している場合、サブスクライバーの主キーの制約を削除し、パブリッシャーの主キーの制約を残すことはできますか?
プライマリ 既存のクラスター化された制約とは異なる列でクラスター化したいので、これを行いたいです。最初に制約を削除せずに、制約をクラスター化から非クラスター化に変換できるとは思いません。レプリケーションは既に行われています。
SQL Server 2005 とトランザクション レプリケーションを使用している場合、サブスクライバーの主キーの制約を削除し、パブリッシャーの主キーの制約を残すことはできますか?
プライマリ 既存のクラスター化された制約とは異なる列でクラスター化したいので、これを行いたいです。最初に制約を削除せずに、制約をクラスター化から非クラスター化に変換できるとは思いません。レプリケーションは既に行われています。
主キーを残して、サブスクライバーに追加の非クラスター化インデックスを作成しないのはなぜですか。そうしないと、問題が解決しませんか?サブスクライバーで他の列のインデックスを作成する理由がパフォーマンスである場合、これは解決策になるはずです。
これはスナップショットレプリケーションでは機能する可能性がありますが、トランザクションレプリケーションで機能するかどうかはわかりません。テーブルを複製できるようにするための唯一の要件は、各行を一意に識別できるようにするための主キーの存在です。
レプリケーションを一時停止してから、主キー制約を削除し、クラスター化されていないPKとして再作成してから、レプリケーションの一時停止を解除してみてください。SQL ServerでPKを削除できない場合は、損傷を与える前に確認できます。
別の方法は、レプリケーションを中断して再初期化することです。
いずれにせよ、メンテナンス期間中に変更を行う必要があります。
直接、主キーの場合は不可能です。逆:トランザクションレプリケーションを設定する場合、レプリケーションするアーティクルを選択するときに、「外部キー制約の確認」などのさまざまなプロパティを選択できます。そのプロパティをfalseに設定します。db1で、主キーを外部キーに変換し、それを主キーとして含む新しいテーブルtb1を使用します。したがって、最終的には、レプリケーションデータベースdb2で、外部キー制約がレプリケートされないため、必要な処理を実行できます。
レプリケーション プロセスの基本は、異なるサーバー間で同一のデータベース構成を維持することです。
ここでの質問は、レプリケーション プロセスを使用して、この基本的なレプリケーションの原則を破ることができるかどうかを尋ねるものと見なすことができます。
ですから答えはノーですが、あなたがこの質問を定式化する理由に興味があります. この「デュアル主キー」オプションは、別の問題を解決する方法と見なされていたと言えますか? この最初の問題に戻って、それを解決する別の方法を探すべきだと思います。
私は自分で宿題をしましたが、サブスクライバーの制約を削除できるという結論に達しました。
簡単なトランザクション レプリケーション シナリオを設定し、サブスクライバーに主キーをドロップしてから、いくつかの挿入、削除、および更新を行い、変更がサブスクライバーにレプリケートされたことを確認しました。
最初からそうするべきだったと思います。こんなに簡単だとは思いませんでした:)。