このモニターはサブスクライバーへの配信を待機しているディストリビューション データベースのコマンドの遅延を確認します。
このモニターは、未配布のコマンド タブの保留中のコマンドを示すレプリケーション モニターと類似した情報を、それらのコマンドの推定配布時間と共に収集します。推定時間がしきい値の期間よりも長い場合、警告が発生し情報が表示されます。
http://msdn.microsoft.com/library/ms183374.aspx
ディストリビューション エージェントが停止した可能性があります。
パブリッシャー データベースに多数のコマンドがコミットされており、ディストリビューション データベースにレプリケートされている場合、保留中のトランザクションが多数ある場合があります。
ディストリビューション データベースからの読み取りまたはサブスクライバー データベースへの書き込みで、ディストリビューション エージェントにパフォーマンスの問題が発生している可能性があります。
-MaxDeliveredTransactions と -Continuous の両方を指定した場合、ディストリビューション エージェントでは指定した数のトランザクションが配信され、(-Continuous を指定した場合も) 停止されます。ジョブの完了後は配布エージェントを再開する必要があります。
パブリッシャー データベースのトランザクション量が多いために警告が発生している場合、推定配信時間を評価します。推定配信時間がスナップショットの作成および適用よりも長い場合、サブスクリプションの再初期化を検討します。
ディストリビューション データベースの読み取りでディストリビューション エージェントにパフォーマンス上の問題が発生している場合、ディストリビューション テーブルに対して fullscan オプションで統計の更新を実行します。
サブスクライバーへの書き込みでディストリビューション エージェントにパフォーマンス上の問題が発生している場合、サブスクライバー データベースに対するブロッキングまたはリソース待機を確認し、それを解決します。
ディストリビューション エージェントのパフォーマンスを改善するには、次のパラメーター値を変更してテストしてください。
CommitBatchSize
COMMIT ステートメントが発行される前に、サブスクライバーに発行されるトランザクション数。既定値は 100 です。
QueryTimeOut
クエリがタイムアウトするまでの秒数。既定値は 1800 秒です。
SubscriptionStreams
サブスクライバーに変更のバッチを並列実行で適用するために、ディストリビューション エージェントあたりに許可される接続数。SQL Server パブリッシャーの場合、1 から 64 の値の範囲がサポートされます。
https://msdn.microsoft.com/library/ms173804.aspx)
名前 | 説明 | 既定値 |
アラートの優先度 | アラートの優先順位を定義します。 | 中 |
アラートの重要度 | アラートの重大度を定義します。 | 警告 |
有効化 | ワークフローを有効または無効にします。 | はい |
警告を生成する | ワークフローがアラートを生成するかどうかを定義します。 | はい |
間隔 (秒) | ワークフローを実行する定期的な実行間隔 (秒)。 | 300 |
同期時間 | 同期時間 |
|
しきい値 | しきい値 | 60 |
タイムアウト (秒) | ワークフローが終了して失敗とマークされるまでの、ワークフローの許容実行時間を指定します。 | 300 |
データベース接続のタイムアウト (秒) | 指定された期間中にデータベースにアクセスできない場合、ワークフローは失敗し、イベントが登録されます。 | 15 |
Target | Microsoft.SQLServer.2016.Replication.Subscription | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2016.Replication.MonitorType.SubscriptionLongEstimatedTime | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2016.Replication.Monitor.SubscriptionLongEstimatedTimeMonitor" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2016.Replication.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.Replication.MonitorType.SubscriptionLongEstimatedTime" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Replication.Monitor.SubscriptionLongEstimatedTime.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/SubscriptionName$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='EstimatedTime']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SqlTimeout>15</SqlTimeout>
<ConnectionString>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Distributor$</ConnectionString>
<SubscriptionType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Type$</SubscriptionType>
<PublisherName>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Publisher$</PublisherName>
<Subscriber>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Subscriber$</Subscriber>
<PublisherDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/PublicationDatabase$</PublisherDb>
<SubscriberDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/SubscriptionDatabase$</SubscriberDb>
<Publication>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/PublicationName$</Publication>
<ReplicationType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/ReplicationType$</ReplicationType>
<EstimatedTimeSecondsThreshold>60</EstimatedTimeSecondsThreshold>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>