Sql-server – How to back out of mass update in SQL Replication

merge-replicationsql server

We have a database which is set up in Merge Replication.

We accidentally updated hundreds of thousands of records in a large published table on the publisher database. We did something like this:

update LargeTable
set Field = Field

So basically, every record got updated to be the same – no data was actually changed. However, every record in the table is now being delivered to every subscriber and the whole system has come to a halt. We are very worried this will take days and days to complete.

How can we safely remove data from the msmerge_contents and msmerge_genhistory table? Are there other system replication tables to remove records from? I can see the exact records in these tables that refer to the mass update. I just don't want to remove them without knowing it is safe to do so.

Best Answer

There is no supported way to achieve what you want to do, aside from complete reinitialization. That said, you might be able to achieve a shortcut and retain a supported configuration, but only under direction of a Microsoft support engineer. Attempting to modify the system replication tables without that guidance risks compounding your current problems.

My advice would be to open a case under your support contract, or take the hit of reinitializing and change operating practices to prevent a recurrence of the problem in future.