レプリケーションをプログラムから監視する方法 (RMO プログラミング)
レプリケーション モニタは、レプリケーション トポロジをグラフィカルに監視できるツールです。レプリケーション管理オブジェクト (RMO) を使用すると、同じ監視データにプログラムからアクセスできます。RMO クラスでは、次のようなタスクをプログラミングできます。
- サブスクライバで過去 5 回のマージ エージェントの実行結果を監視する。
- パブリッシャ、パブリケーション、およびサブスクリプションの状態を監視する。
- 1 つまたは複数のサブスクライバで適用待ち状態になっているトランザクション コマンドを監視する。
- パブリケーションについて、ユーザーの介入が必要となるしきい値の基準を定義する。
- トレーサ トークンのステータスを監視する。詳細については、「トランザクション レプリケーションの待機時間を計測して接続を検証する方法 (RMO プログラミング)」を参照してください。
サブスクライバでマージ パブリケーションのサブスクリプションを監視するには
ServerConnection クラスを使用して、サブスクライバへの接続を作成します。
MergeSubscriberMonitor クラスのインスタンスを作成し、サブスクリプションの Publisher、Publication、PublisherDB、SubscriberDB の各プロパティを設定します。次に、ConnectionContext プロパティに対し、手順 1. で作成した ServerConnection を設定します。
次のいずれかのメソッドを呼び出して、このサブスクリプションのマージ エージェント セッションの情報を取得します。
- GetSessionsSummary - 過去に発生したマージ エージェント セッションの情報を保持する MergeSessionSummary オブジェクトの配列を返します (最大 5 セッション)。監視対象のすべてのセッションについて、SessionID 値を確認してください。
- GetSessionsSummary - hours パラメータに指定された期間内に発生したマージ エージェント セッションの情報を保持する MergeSessionSummary オブジェクトの配列を返します (最大 5 セッション)。監視対象のすべてのセッションについて、SessionID 値を確認してください。
- GetLastSessionSummary - 前回のマージ エージェント セッションの情報を保持する MergeSessionSummary オブジェクトを返します。このセッションの SessionID 値を確認してください。
- GetSessionsSummaryDataSet - 過去のマージ エージェント セッション (最大 5 セッション) の情報を、1 行あたり 1 セッションの形式で保持する DataSet オブジェクトを返します。監視対象のすべてのセッションについて、Session_id 列の値を確認してください。
- GetLastSessionSummaryDataRow - 前回のマージ エージェント セッションの情報を保持する DataRow オブジェクトを返します。このセッションの Session_id 列の値を確認してください。
(省略可) RefreshSessionSummary を呼び出して、mss, として渡された MergeSessionSummary オブジェクトのデータを更新します。または、RefreshSessionSummary を呼び出して、drRefresh として渡された DataRow オブジェクトのデータを更新します。
手順 3. で取得したセッション ID を使用して次のいずれかのメソッドを呼び出し、特定のセッションの詳細情報を取得します。
- GetSessionDetails - 指定された sessionID について、MergeSessionDetail オブジェクトの配列を返します。
- GetSessionDetailsDataSet - 指定された sessionID の情報を保持する DataSet オブジェクトを返します。
ディストリビュータですべてのパブリケーションについてレプリケーション プロパティを監視するには
ServerConnection クラスを使用して、ディストリビュータへの接続を作成します。
ReplicationMonitor クラスのインスタンスを作成します。
ConnectionContext プロパティに、手順 1. で作成した ServerConnection を設定します。
LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。
次の 1 つまたは複数のメソッドを実行して、このディストリビュータを使用している、すべてのパブリッシャのレプリケーション情報を取得します。
- EnumDistributionAgents - このディストリビュータのすべてのディストリビューション エージェントに関する情報を保持する DataSet オブジェクトを返します。
- EnumErrorRecords - ディストリビュータに保存されているエラー情報を保持する DataSet オブジェクトを返します。
- EnumLogReaderAgents - ディストリビュータのすべてのログ リーダー エージェントに関する情報を保持する DataSet オブジェクトを返します。
- EnumMergeAgents - ディストリビュータのすべてのマージ エージェントに関する情報を保持する DataSet オブジェクトを返します。
- EnumMiscellaneousAgents - ディストリビュータのその他すべてのレプリケーション エージェントに関する情報を保持する DataSet オブジェクトを返します。
- EnumPublishers - このディストリビュータのすべてのパブリッシャに関する情報を保持する DataSet オブジェクトを返します。
- EnumPublishers2 - このディストリビュータを使用しているパブリッシャを返す DataSet オブジェクトを返します。
- EnumQueueReaderAgents - ディストリビュータのすべてのキュー リーダー エージェントに関する情報を保持する DataSet オブジェクトを返します。
- EnumQueueReaderAgentSessionDetails - 指定されたキュー リーダー エージェントおよびセッションの情報を保持する DataSet オブジェクトを返します。
- EnumQueueReaderAgentSessions - 指定されたキュー リーダー エージェントのセッション情報を保持する DataSet オブジェクトを返します。
- EnumSnapshotAgents - ディストリビュータのすべてのスナップショット エージェントに関する情報を保持する DataSet オブジェクトを返します。
ディストリビュータで特定のパブリッシャのパブリケーション プロパティを監視するには
ServerConnection クラスを使用して、ディストリビュータへの接続を作成します。
次のいずれかの方法で PublisherMonitor オブジェクトを取得します。
- PublisherMonitor クラスのインスタンスを作成します。パブリッシャの Name プロパティを設定し、ConnectionContext プロパティに、手順 1. で作成した ServerConnection を設定します。LoadProperties メソッドを呼び出してオブジェクトのプロパティを取得します。このメソッドから false が返された場合、パブリッシャ名が正しく定義されていないか、パブリケーションが存在していません。
- PublisherMonitorCollection から取得します。このコレクションには、既存の ReplicationMonitor オブジェクトの PublisherMonitors プロパティを使用してアクセスできます。
次の 1 つまたは複数のメソッドを実行して、このパブリッシャに属している、すべてのパブリケーションのレプリケーション情報を取得します。
- EnumDistributionAgentSessionDetails - 指定されたディストリビューション エージェントおよびセッションの情報を保持する DataSet オブジェクトを返します。
- EnumDistributionAgentSessions - 指定されたディストリビューション エージェントのセッション情報を保持する DataSet オブジェクトを返します。
- EnumErrorRecords - 指定されたエラーのエラー レコード情報を保持する DataSet オブジェクトを返します。
- EnumLogReaderAgentSessionDetails - 指定されたログ リーダー エージェントおよびセッションの情報を保持する DataSet オブジェクトを返します。
- EnumLogReaderAgentSessions - 指定されたログ リーダー エージェントのセッション情報を保持する DataSet オブジェクトを返します。
- EnumMergeAgentSessionDetails - 指定されたマージ エージェントおよびセッションの情報を保持する DataSet オブジェクトを返します。
- EnumMergeAgentSessionDetails2 - 指定されたマージ エージェントおよびセッションの追加情報を保持する DataSet オブジェクトを返します。
- EnumMergeAgentSessions - 指定されたマージ エージェントのセッション情報を保持する DataSet オブジェクトを返します。
- EnumMergeAgentSessions2 - 指定されたマージ エージェントの追加のセッション情報を保持する DataSet オブジェクトを返します。
- EnumPublications - このディストリビュータのすべてのパブリケーションに関する情報を保持する DataSet オブジェクトを返します。
- EnumPublications2 - このディストリビュータのすべてのパブリケーションに関する追加情報を保持する DataSet オブジェクトを返します。
- EnumSnapshotAgentSessionDetails - 指定されたスナップショット エージェントおよびセッションの情報を保持する DataSet オブジェクトを返します。
- EnumSnapshotAgentSessions - 指定されたスナップショット エージェントのセッション情報を保持する DataSet オブジェクトを返します。
- EnumSubscriptions - このディストリビュータのパブリケーションに対するすべてのサブスクリプションに関する情報を保持する DataSet オブジェクトを返します。
ディストリビュータで特定のパブリッシャのプロパティを監視するには
ServerConnection クラスを使用して、ディストリビュータへの接続を作成します。
次のいずれかの方法で PublicationMonitor オブジェクトを取得します。
- PublicationMonitor クラスのインスタンスを作成します。パブリケーションの DistributionDBName、PublisherName、PublicationDBName、Name の各プロパティを設定し、ConnectionContext プロパティを、手順 1. で作成した ServerConnection に設定します。LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。このメソッドから false が返された場合、パブリケーションのプロパティが正しく定義されていないか、パブリケーションが存在していません。
- PublicationMonitorCollection から取得します。このコレクションには、既存の PublisherMonitor オブジェクトの PublicationMonitors プロパティを使用してアクセスできます。
次の 1 つまたは複数のメソッドを実行して、このパブリケーションに関する情報を取得します。
- EnumErrorRecords - 指定されたエラーのエラー レコードを保持する DataSet オブジェクトを返します。
- EnumLogReaderAgent - このパブリケーションのログ リーダー エージェントに関する情報を保持する DataSet オブジェクトを返します。
- EnumMonitorThresholds - このパブリケーションに設定されている監視警告のしきい値情報を保持する DataSet オブジェクトを返します。
- EnumQueueReaderAgent - このパブリケーションで使用されるキュー リーダー エージェントに関する情報を保持する DataSet オブジェクトを返します。
- EnumSnapshotAgent - このパブリケーションのスナップショット エージェントに関する情報を保持する DataSet オブジェクトを返します。
- EnumSubscriptions - このパブリケーションのサブスクリプションに関する情報を保持する DataSet オブジェクトを返します。
- EnumSubscriptions2 - このパブリケーションのサブスクリプションに関する追加情報を保持する DataSet オブジェクトを、指定された SubscriptionResultOption に基づいて返します。
- EnumTracerTokenHistory - 指定されたトレーサ トークンの待機時間情報を保持する DataSet オブジェクトを返します。
- EnumTracerTokens - このパブリケーションに挿入されたすべてのトレーサ トークンに関する情報を保持する DataSet オブジェクトを返します。
サブスクライバで適用待ち状態になっているトランザクション コマンドを監視するには
ServerConnection クラスを使用して、ディストリビュータへの接続を作成します。
次のいずれかの方法で PublicationMonitor オブジェクトを取得します。
- PublicationMonitor クラスのインスタンスを作成します。パブリケーションの DistributionDBName、PublisherName、PublicationDBName、Name の各プロパティを設定し、ConnectionContext プロパティを、手順 1. で作成した ServerConnection に設定します。LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。このメソッドから false が返された場合、パブリケーションのプロパティが正しく定義されていないか、パブリケーションが存在していません。
- PublicationMonitorCollection から取得します。このコレクションには、既存の PublisherMonitor オブジェクトの PublicationMonitors プロパティを使用してアクセスできます。
TransPendingCommandInfo メソッドを実行して PendingCommandInfo オブジェクトを取得します。
この PendingCommandInfo オブジェクトのプロパティを使用して、保留状態の推定コマンド数と、コマンドを配信を完了するまでの時間を調べます。
パブリケーションに対して監視警告のしきい値を設定するには
ServerConnection クラスを使用して、ディストリビュータへの接続を作成します。
次のいずれかの方法で PublicationMonitor オブジェクトを取得します。
- PublicationMonitor クラスのインスタンスを作成します。パブリケーションの DistributionDBName、PublisherName、PublicationDBName、Name の各プロパティを設定し、ConnectionContext プロパティを、手順 1. で作成した ServerConnection に設定します。LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。このメソッドから false が返された場合、パブリケーションのプロパティが正しく定義されていないか、パブリケーションが存在していません。
- PublicationMonitorCollection から取得します。このコレクションには、既存の PublisherMonitor オブジェクトの PublicationMonitors プロパティを使用してアクセスできます。
EnumMonitorThresholds メソッドを実行します。返された MonitorThreshold オブジェクトの ArrayList で、現在のしきい値設定を確認します。
ChangeMonitorThreshold メソッドを実行します。次のパラメータを指定します。
metricID - 監視しきい値の基準を表す Int32 値です。次の表に示す値を使用します。
値 説明 1
expiration - トランザクション パブリケーションのサブスクリプションについて有効期限切れを監視します。
2
latency - トランザクション パブリケーションのサブスクリプションについてパフォーマンスを監視します。
4
mergeexpiration - マージ パブリケーションのサブスクリプションについて有効期限切れを監視します。
5
mergeslowrunduration - 低速回線 (ダイヤルアップ) 接続でのマージの同期時間を監視します。
6
mergefastrunduration - 高速回線 (LAN) 接続にでのマージの同期時間を監視します。
7
mergefastrunspeed - 高速回線 (LAN) 接続でのマージの同期速度を監視します。
8
mergeslowrunspeed - 低速回線 (ダイヤルアップ) 接続でのマージの同期速度を監視します。
enable - パブリケーションで基準が有効かどうかを示す Boolean 値です。
thresholdValue - しきい値を設定する整数値です。
shouldAlert - このしきい値に対して警告を生成するかどうかを示す整数です。
参照
処理手順
レプリケーションをプログラムから監視する方法 (レプリケーション Transact-SQL プログラミング)