Abonnementstatus für Verleger

Microsoft.SQLServer.Replication.Windows.Monitor.PublisherSubscriptionsMonitor (UnitMonitor)

Dieser Monitor überprüft, ob inaktive Abonnements für Veröffentlichungen vorhanden sind.

Knowledge Base article:

Zusammenfassung

Abonnements können deaktiviert werden oder ablaufen, wenn sie nicht innerhalb einer angegebenen Beibehaltungsdauer synchronisiert werden. Die Aktionen, die auftreten, hängen vom Typ der Replikation und der Beibehaltungsdauer ab, die überschritten wird.

Ursachen

Das Abonnement wurde innerhalb der Beibehaltungsdauer nicht erfolgreich synchronisiert.

Transaktional:

Wenn ein Abonnement nicht innerhalb der maximalen Verteilungsbeibehaltungsdauer (standardmäßig 72 Stunden) synchronisiert wird und Änderungen in der Verteilungsdatenbank vorliegen, die nicht an den Abonnenten übermittelt wurden, wird das Abonnement durch den Verteilungsbereinigungsauftrag, der auf dem Verteiler ausgeführt wird, als deaktiviert markiert. Das Abonnement muss erneut initialisiert werden.

Merge:

Wenn für eine Veröffentlichung eine Beibehaltungsdauer von 14 Tagen gilt, kann ein Abonnement ablaufen, wenn es nicht innerhalb von 14 Tagen synchronisiert wurde. Wenn der Verleger SQL Server 2005 oder eine höhere Version ausführt und der Agent für das Abonnement aus SQL Server 2005 oder einer höheren Version stammt, läuft ein Abonnement nur ab, wenn keine Änderungen an den Daten in der Partition dieses Abonnements vorgenommen wurden. Angenommen, ein Abonnent empfängt z. B. Kundendaten nur für Kunden in Deutschland. Wenn die Beibehaltungsdauer auf 14 Tage festgelegt ist, läuft das Abonnement nur dann an Tag 14 ab, wenn innerhalb der letzten 14 Tage Änderungen an den deutschen Kundendaten vorgenommen wurden.

Lösungen

Überprüfen Sie, ob für den Verteilungs-/Merge-Agent ein Fehler aufgetreten ist. Überprüfen Sie den Auftragsverlauf, und rufen Sie weitere Details ab.

Überprüfen Sie für Abonnements, die inaktiv geworden sind, die Msrepl_errors-Tabelle in der Verteilungsdatenbank auf Fehler. Beheben Sie den Fehler, und initialisieren Sie das Abonnement dann erneut.

Wenn für die Transaktionsreplikation keine Fehler vorhanden sind, überprüfen Sie die MSdistribution_history-Tabelle hinsichtlich der Ursache, die bewirkt hat, dass das Abonnement inaktiv geworden ist. Wenn für die Mergereplikation keine Fehler vorhanden sind, überprüfen Sie die msmerge_history-Tabelle hinsichtlich der Ursache, die bewirkt hat, dass das Abonnement inaktiv geworden ist.

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Warnungspriorität

Definiert die Warnungspriorität.

Normal

Warnungsschweregrad

Definiert den Warnungsschweregrad.

Warnung

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Generiert Warnungen

Definiert, ob der Workflow eine Warnung generiert.

Ja

Intervall (Sekunden)

Gibt das Wiederholungsintervall in Sekunden für die Ausführung des Workflows an.

900

Synchronisierungszeit

Synchronisierungszeit

 

Timeout (Sekunden)

Gibt an, wie lange der Workflow ausgeführt werden kann, bevor er geschlossen und als fehlerhaft markiert wird.

300

Timeout für Datenbankverbindung (Sekunden)

Es tritt ein Fehler beim Workflow auf, und ein Ereignis wird registriert, wenn der Workflow nicht innerhalb des angegebenen Zeitraums auf die Datenbank zugreifen kann.

15

Element properties:

TargetMicrosoft.SQLServer.Replication.Windows.Publisher
Parent MonitorSystem.Health.ConfigurationState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Replication.Windows.MonitorType.PublisherSubscriptionsMonitor
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL unter Windows-Replikation: Inaktive Abonnements für Verleger erkannt
Der Verleger (Name: "{0}", Server: "{1}") hat inaktive Abonnements ermittelt.
Informationen:
{2}
RunAsMicrosoft.SQLServer.Core.RunAs.Monitoring

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Replication.Windows.Monitor.PublisherSubscriptionsMonitor" Accessibility="Public" Enabled="true" Target="SQLReplWD!Microsoft.SQLServer.Replication.Windows.Publisher" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Replication.Windows.MonitorType.PublisherSubscriptionsMonitor" ConfirmDelivery="false" RunAs="SqlCoreLib!Microsoft.SQLServer.Core.RunAs.Monitoring">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Replication.Windows.Monitor.PublisherSubscriptions.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/ConnectionString$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</InstanceName>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericPublisher']/Distributor$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<DistributorDbName>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericPublisher']/DistributorDatabaseName$</DistributorDbName>
<PublisherServerName>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericPublisher']/ConnectionString$</PublisherServerName>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<CheckMachineAndInstanceName>false</CheckMachineAndInstanceName>
</Configuration>
</UnitMonitor>