Quantcast
Channel: SQL Server Replication forum
Viewing all articles
Browse latest Browse all 4054

Merge replication metadata deletion error MSSQL_REPL-2147199402

$
0
0

I setup merge replication about 3 weeks ago between a few databases all running SQL 2008 SP1:

  • DB1 - This database is the publisher and distributor.
  • DB2 - This database is a write-only subscriber (-EXCHANGETYPE 1) to DB1.
  • DB3 - This database is a write-only subscriber (-EXCHANGETYPE 1) to DB1.
  • DB4 - This database is a write-only subscriber (-EXCHANGETYPE 1) to DB1.
  • DB5 - This database is a read-only subscriber (-EXCHANGETYPE 2) to DB1.
  • DB6 - This database is a read-only subscriber (-EXCHANGETYPE 2) to DB1.

Everything was running fine, then suddenly one at a time the replication jobs for DB2, DB3, and DB4 all started reporting the error:

The Merge Agent failed after detecting that retention-based metadata cleanup has deleted metadata at the Publisher for changes not yet sent to the Subscriber. You must reinitialize the subscription (without upload). (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147199402)

I was able to manually upload data from DB2, DB3, and DB4 to DB1 then reinitialize the subscriptions.  However, I don't understand why only those three subscriptions failed.  I have other merge replication jobs between the same SQL instances that are still running fine.  The only unique thing I can determine about the failed subscriptions is that they are write-only.  I really don't want to make them read/write, as it would cause a lot of unnecessary network traffic to flow between them.

Based on what I've been able to gather, the subscriptions were marked as expired which caused this problem.  If I change subscriptions to never expire to get around this problem, is that going to cause my distribution DB to grow unchecked?  Are there other ways to solve this problem?

Thanks,

Matt


Viewing all articles
Browse latest Browse all 4054

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>