現象
SQL Server 2008 および以降のバージョンの SQL Server でのマージ レプリケーションの同期中に、マージ エージェントが失敗することがあります。さらに、次のエラー メッセージが表示されます。
マージ エージェントは、保持ベースのメタデータのクリーンアップによって、まだパブリッシャに送信されていない変更のメタデータがサブスクライバーで削除されたことを検出した後に失敗しました。サブスクリプションを再初期化する必要があります (アップロードは行う必要があります)。(出典:MSSQL_REPL、エラー番号:MSSQL_REPL-2147199401)ヘルプを表示する: http://help/MSSQL_REPL-2147199401
この問題は、複数の理由で発生する可能性があります。これには、特定の状況下で予想される多くの理由が含まれます。このエラーが予期せず発生したかどうかを確認するには、「原因」に記載されているメタデータの詳細を調べます。
原因
この問題の原因は、サブスクライバの次のシステム テーブルにあります。
-
dbo.sysMergeSubscriptions
-
dbo.MsMerge_Genhistory
マージ エージェントが同期されていないことを確認します。次に、次のクエリを実行し、結果を確認します。
pubid = サブイドおよび送信元が null でないサブスクライバー DB.dbo.sysMerge サブスクリプションから送信済みファイルを選択します。
生成 >= sentgen_value世代別に並べ替えるサブスクライバ DB.dbo.MSmerge_genhistoryから上位 20 *を選択しますクエリの出力は次のようになります。
-
最初の行の生成列の値は、前のクエリのsentgen値よりも若干大きくなります。
-
genstatus列の値は4です。
-
変更カウント列の値は0です。
メモ通常、最初の行のcoldate列の値は、他の行のその列の値よりもはるかに古くなります。
解決方法
この問題を解決するには、エラーを生成したサブスクライバを再初期化します。一部のシナリオでは、完全な再初期化を行わなくてもこの問題を解決できる場合があります。考えられる回避策については、マイクロソフト カスタマー サポート サービスにお問い合わせください。今後この問題が発生しないようにするには、SQL Server のバージョンに応じて、次のいずれかの修正プログラムを適用します。
累積的な更新プログラムの情報
SQL Server 2008
SQL Server 2008 では、この問題に対する修正プログラムはありません。
SQL Server 2008 R2 サービス パック 2
この問題の修正プログラムは、累積的な更新プログラム 3 で最初にリリースされました。SQL Server 2008 R2 Service Pack 2 のこの累積的な更新プログラム パッケージを入手する方法の詳細については、次のサポート技術情報番号をクリックしてください。
2754552 SQL Server 2008 R2 サービス パック 2 の累積的な更新プログラム パッケージ 3メモビルドは累積的であるため、各新しい修正プログラム リリースには、すべての修正プログラムと、以前の SQL Server 2008 R2 Service Pack 2 修正プログラム リリースに含まれていたすべてのセキュリティ修正プログラムが含まれています。この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。詳細については、次のサポート技術情報番号をクリックしてください。
2730301 SQL Server 2008 R2 サービス パック 2 がリリースされた後にリリースされた SQL Server 2008 R2 ビルド
SQL Server 2012
この問題の修正プログラムは、累積的な更新プログラム 4 で最初にリリースされました。SQL Server 2012 のこの累積的な更新プログラム パッケージを取得する方法の詳細については、マイクロソフト サポート技術情報の記事を表示するのには次の資料番号をクリックします。
2758687 SQL Server 2012 の累積的な更新プログラム パッケージ 4メモビルドは累積的であるため、各新しい修正プログラム リリースには、すべての修正プログラムと、以前の SQL Server 2012 修正プログラム リリースに含まれていたすべてのセキュリティ修正プログラムが含まれています。この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。詳細については、次のサポート技術情報番号をクリックしてください。
2692828 SQL Server 2012 がリリースされた後にリリースされた SQL Server 2012 ビルド
SQL Server 2008 R2 サービス パック 1
この問題の修正プログラムは、累積的な更新プログラム 8 で最初にリリースされました。SQL Server 2008 R2 Service Pack 1 のこの累積的な更新プログラム パッケージを入手する方法の詳細については、次のサポート技術情報番号をクリックしてください。
2723743 SQL Server 2008 R2 SP1 用の累積的な更新プログラム パッケージ 8メモビルドは累積的であるため、各新しい修正プログラム リリースには、すべての修正プログラムと、以前の SQL Server 2008 R2 Service Pack 1 修正プログラム リリースに含まれていたすべてのセキュリティ修正プログラムが含まれています。この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。詳細については、次のサポート技術情報番号をクリックしてください。
2567616 SQL Server 2008 R2 SP1 がリリースされた後にリリースされた SQL Server 2008 R2 ビルド