Replication Merge Agent State for Subscription

Microsoft.SQLServer.2008.Replication.Monitor.SubscriptionMergeAgentState (UnitMonitor)

This monitor checks the status of the Replication Merge Agent service for Subscription.

Knowledge Base article:

Summary

The Replication Merge Agent is an executable that applies the initial snapshot held in the database tables to the Subscribers. It also merges incremental data changes that occurred at the Publisher after the initial snapshot was created. The agent also reconciles conflicts using either the configured rules or uses a custom resolver.

The Replication Merge Agent is an executable that applies the initial snapshot held in the database tables to the Subscribers. It also merges incremental data changes that occurred at the Publisher after the initial snapshot was created. The agent also reconciles conflicts using either the configured rules or uses a custom resolver.

Causes

A merge agent can fail because of the following reasons:

Resolutions

This issue can be resolved by ensuring the following:

Additional

Query the msmerge_agents and msmerge_history tables on the distribution database to get more information on the agent failure. The Msrepl_errors table also contains information about any agent failures.

External

Desktop heap issue

http://support.microsoft.com/kb/949296

Replication Merge agent

http://msdn.microsoft.com/library/ms147839.aspx

Overrideable Parameters

Name

Description

Default Value

Enabled

Enables or disables the workflow

Yes

Generates Alerts

Defines whether the workflow generates an Alert

Yes

Interval (seconds)

The recurring interval of time in seconds in which to run the workflow.

300

Show Jobs With Unknown State

Include jobs with unknown state to the monitor output and alert context. Will affect health

No

Timeout (seconds)

Timeout (seconds)

300

Synchronization Time

Synchronization Time

 

Element properties:

TargetMicrosoft.SQLServer.2008.Replication.Subscription
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.Replication.MonitorType.ReplicationAgentState
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL2008 Replication: The Merge agent for Subscription has an errors.
{0}
RunAsMicrosoft.SQLServer.Replication.Monitoring.RunAs.Monitor

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.Replication.Monitor.SubscriptionMergeAgentState" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2008.Replication.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.Replication.MonitorType.ReplicationAgentState" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.Replication.Monitor.SubscriptionMergeAgentState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SqlTimeout>300</SqlTimeout>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/Distributor$</ConnectionString>
<XPathName>Merge$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/Distributor$$Target/Host/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscriber']/ConnectionString$$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/SubscriptionName$</XPathName>
<ShowJobsWithUnknownState>false</ShowJobsWithUnknownState>
<EstimatedJobDuration>15</EstimatedJobDuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>