SQL Server のマージレプリケーションで、エラー21036が表示された時の対処方法

SQL Serverのマージレプリケーション処理の最中に処理が中断された場合、次回同期時にサブスクライバ側でエラー(21036)が発生し、以降、同期ができなくなることがありました。

#どこかの誰かのために復帰方法をメモしておきます。


●発生しているエラー詳細:

試行したコマンド:
{call sp_MSensure_single_instance (N'pubserver\aaa-dbPub-Pub_dbPub-mypc\SQLEXPRESS-7', 4)}

エラー メッセージ:
マージ プロセスで、Publisher 'pubserver\aaa:dbPub' に接続できませんでした。サーバーが実行されていることを確認してください。 (ソース: MSSQL_REPL, エラー番号: MSSQL_REPL-2147199368)
ヘルプの表示: http://help/MSSQL_REPL-2147199368
サブスクリプションに対して別の merge エージェントが実行されているか、サーバーで同じエージェントからの以前の要求が処理されています。 (ソース: MSSQLServer, エラー番号: 21036)
ヘルプの表示: http://help/21036

●対処方法:
パブリッシャのシステムテーブル「sysprocesses」からプロセスを探します。
以下のSQLを実行(※「program_name」の値は環境によって異なります。エラー情報によって適宜変更してください。)

SELECT * FROM sys.sysprocesses
where program_name = 'pubserver\aaa-dbPub-Pub_dbPub-mypc\SQLEXPRESS-7'

該当するプロセスリストが表示された場合、
「spid」列に表示されているプロセスIDを引数にして、クエリウインドウから「kill」します。
(xx は spidに表示されていた数値)

kill xx

これで 再度、サブスクライバ側で同期処理を実行してください。


#マージレプリケーションは、microsoftのサイト以外では日本語の情報がほとんど無いのでつらい。。。