Merge Replication System Tables


The earlier blog post “How to: Detect the database is merge replicated”, gave a list of the system tables that get created in a merge subscription database. This blog post explains brief description of each of the system tables. There is another blog post “RDA Subscriptions” that describes briefly the RDA system tables.

  __sysMergeSubscriptions – Each row in this table represents a merge subscription. Note that, multiple merge subscriptions can co-exist in a single client database.

__sysMergeArticles – Each row in this table represents a merge subscription article.

__sysMergeSubscriptionProperties – Each row in this table stores merge subscription properties that are on set SqlCeReplication object. For example, Internet URL/Login/Password, Publisher Machine/UserId/Password/Database/Network, Distributor Network/Machine/Database/UserId/Password … etc.


List of tables that belong to a particular publication:

SELECT TableName FROM __sysMergeArticles AS sma INNER JOIN __sysMergeSubscriptions AS sms ON sma.SubscriptionId == sms.SubscriptionId AND sms. Publication == @PublicationName.


Every merge article/table is tracked by SQL Server Compact engine. Tracking infrastructure creates three system tables. Namely,

__sysTrackedObjects – Each row in this table represents a database object that is tracked. It can be a table, column … etc (Note: Merge replication supports column level tracking)

__sysDeletedRows/__sysRowTrack – Each row in this table represents a deleted row of a tracked table



Laxmi Narsimha Rao ORUGANTI