Prozentsatz der abgelaufenen Abonnements

Microsoft.SQLServer.2012.Replication.Monitor.PercentOfExpiredSubscriptions (UnitMonitor)

Der Prozentsatz der abgelaufenen Abonnements des Monitors.

Knowledge Base article:

Zusammenfassung

Misst den Prozentsatz der abgelaufenen Abonnements.

Ursachen

Ein Abonnement läuft ab, wenn es nicht innerhalb der angegebenen Beibehaltungsdauer synchronisiert wurde.

Wenn ein Abonnement nicht innerhalb der angegebenen Beibehaltungsdauer synchronisiert wurde, läuft es bei Verwendung von Transaktionsreplikation ab und wird vom Bereinigungsauftrag für abgelaufene Abonnements gelöscht, der auf dem Verleger ausgeführt wird.

Bei Verwendung von Mergereplikation wird die Beibehaltungsdauer durch die Parameter "@retention" und "@retention_period_unit" von "sp_addmergepublication" definiert. Ein Abonnement läuft nur ab, wenn es während der Beibehaltungsdauer nicht erfolgreich synchronisiert wurde oder Datenänderungen an der Partition des Abonnenten vorgenommen wurden.

Lösungen

Für Transaktionsreplikation muss das Abonnement erneut erstellt und synchronisiert werden. Wenn ein Pushabonnement abläuft, wird es vollständig entfernt. Bei Pullabonnements ist dies nicht der Fall. Pullabonnements müssen auf dem Abonnenten bereinigt werden.

Wenn ein Mergeabonnement abläuft, werden die Metadaten für das Abonnement entfernt. Das Abonnement kann bis zum Doppelten der Beibehaltungsdauer seit der letzten erfolgreichen Synchronisierung erneut initialisiert werden. Wenn ein Wert überschritten wird, der doppelt so groß wie die Beibehaltungsdauer ist, wird das Abonnement vollständig entfernt und muss erneut erstellt und synchronisiert werden. Das Abonnement wird für Pushabonnements automatisch durch den Bereinigungsauftrag für abgelaufene Abonnements entfernt. Pullabonnements werden nicht bereinigt und müssen auf dem Abonnenten bereinigt werden.

Die Beibehaltungsdauer muss ggf. angepasst werden, um eine längere Zeitspanne zwischen Abonnentensynchronisierungen zu ermöglichen. Wenn Sie diesen Wert vergrößern, wächst die Menge der beibehaltenen Replikationsdaten an und wirkt sich potenziell negativ auf die Replikationsleistung aus.

Extern

Weitere Informationen zum Verwalten des Abonnementablaufs finden Sie hier:

http://technet.microsoft.com/library/ms151188.aspx

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Fehlerschwellenwert

Fehlerschwellenwert

10

Generiert Benachrichtigungen.

Definiert, ob der Workflow eine Benachrichtigung generiert.

Ja

Intervall (Sekunden)

Das periodische Intervall in Sekunden, in dem der Workflow ausgeführt werden soll.

300

Timeout (Sekunden)

Timeout (Sekunden)

300

Synchronisierungszeit

Synchronisierungszeit

 

Schwellenwert für Warnung

Schwellenwert für Warnung

0

Element properties:

TargetMicrosoft.SQLServer.2012.Replication.Distributor
Parent MonitorSystem.Health.ConfigurationState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.Replication.MonitorType.DistributorPercentOfDeactivatedSubscriptions
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL2012-Replikation: Für den Verteiler wurde ein hoher Prozentsatz abgelaufener Abonnements ermittelt.
Der Verteiler (Name: "{0}", Server: "{1}") hat einen hoher Prozentsatz abgelaufener Abonnements ermittelt.
Prozent abgelaufene Abonnements: {2}\%
Abonnements:
{3}
RunAsMicrosoft.SQLServer.Replication.Monitoring.RunAs.Monitor

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.PercentOfExpiredSubscriptions" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Distributor" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.DistributorPercentOfDeactivatedSubscriptions" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.DistributorPercentOfExpiredSubscriptions.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/ConnectionString$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='DistributorPercentOfDeactivatedSubscriptions']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='Message']$</AlertParameter4>
</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.GenericDistributor']/ConnectionString$</ConnectionString>
<MeasuredStateId>0</MeasuredStateId>
<WarningThreshold>0</WarningThreshold>
<ErrorThreshold>10</ErrorThreshold>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>