現象
パブリッシャーで実行されているマージレプリケーションを、Microsoft SQL Server 2012 または SQL Server 2012 Service Pack 1 (SP1) で使用することを前提とします。 パブリッシャーを SQL Server 2012 Service Pack 2 (SP2) にアップグレードした後、マージエージェントを再起動することはできません。 さらに、次のエラーが表示されます。
マージプロセスで、データベース ' MergePub ' で保持ベースのメタデータのクリーンアップを実行できませんでした。 このエラーが引き続き発生する場合は、このプロセスのクエリタイムアウトを増やすか、保持期間を減らしてください。 トラブルシューティングを行うには、詳細な履歴ログとの同期を再開して、書き込み先の出力ファイルを指定します。
パブリッシャーで sp_mergemetadataretentioncleanup ストアドプロシージャを手動で実行すると、ストアドプロシージャは失敗し、次のエラーが表示されます。
Msg 206、レベル16、State 2、Procedure sp_mergemetadataretentioncleanup、Line 63Operand の種類の競合: bigint は uniqueidentifierMsg 206、レベル16、State 2、Procedure sp_mergemetadataretentioncleanup、Line 65Operand 型の競合: int は uniqueidentifier とは互換性がありません
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで最初に修正されました。
SQL Server 2012 SP2 の累積更新プログラム3 /en-us/help/3002049
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
回避策
この問題を回避するには、パブリッシュされたデータベースで次のクエリを実行します。if exists (select * from sys.columns sc inner join sys.types st on sc.system_type_id = st.system_type_id where object_id = object_id('dbo.sysmergesubscriptions') and sc.name = 'last_local_recgen' and st.name = 'uniqueidentifier') begin alter table dbo.sysmergesubscriptions drop column last_local_recgen alter table dbo.sysmergesubscriptions add last_local_recgen bigint null end
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。