現象
Microsoft SQL Server 2012 Service Pack 2 (SP2) のマージレプリケーションを使用していることを前提としています。 パブリッシャーで sp_mergemetadataretentioncleanup を実行してメタデータをクリーンアップする場合、すべてのサブスクライバーが正常に同期されている場合でも、メタデータを削除することはできません。 この状況では、過剰なメタデータのために同期時間を大幅に増やすことができます。注: [ Last_local_recguid ] 列に null 値が存在するか、パブリッシャー側のsysmergesubscriptionsテーブルの一部のサブスクライバーの [ last_local_recgen ] 列に古いジェネレーションがあります。
原因
この問題は、マージメタデータのクリーンアップ手順での非収束の可能性を減らすために一部の変更が導入されているために発生します。 これを実現するために、クリーンアップでは、削除された場合にアクティブになる可能性のあるジェネレーションを検証し、頻繁に同期されないサブスクライバーを通じて再利用できるようにする必要があります。 この検出メカニズムは、保持期間内にない場合でも、クリーンアップリストから一部の generation を除外する可能性があります。 場合によっては、これによってメタデータテーブルのサイズが大きくなることがあります。
解決方法
この問題は、次の SQL Server の累積的な更新プログラムで最初に修正されました。
SQL Server 2014 SP1 の累積更新プログラム1 /en-us/help/3067839
SQL Server 2012 SP2 の累積更新プログラム4 /en-us/help/3007556
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。