次の方法で共有


プログラムによるレプリケーションの監視

レプリケーション モニターは、レプリケーション トポロジを監視できるグラフィカル ツールです。 Transact-SQL レプリケーション ストアド プロシージャまたはレプリケーション管理オブジェクト (RMO) を使用して、同じ監視データにプログラムでアクセスできます。 これらのオブジェクトを使用すると、次のタスクをプログラムできます。

  • パブリッシャー、パブリケーション、サブスクリプションの状態を監視します。

  • 1 つ以上のサブスクライバーでマージ エージェント セッションを監視します。

  • 1 つ以上のサブスクライバーで適用されるのを待機しているトランザクション コマンドを監視します。

  • パブリケーションで介入が必要なタイミングを決定するしきい値メトリックを定義します。

  • トレーサー トークンの状態を監視します。

このトピックの内容:

Transact-SQL

レプリケーション管理オブジェクト (RMO)

Transact-SQL

ディストリビューターに関連するパブリッシャー、パブリケーション、およびサブスクリプションを監視するには

  1. ディストリビューション データベースのディストリビューターで、 sp_replmonitorhelppublisherを実行します。 これにより、このディストリビューターを使用するすべてのパブリッシャーの監視情報が返されます。 結果セットを 1 つのパブリッシャーに制限するには、@publisherを指定 します

  2. ディストリビューション データベースのディストリビューターで、 sp_replmonitorhelppublicationを実行します。 これにより、このディストリビューターを使用するすべてのパブリケーションの監視情報が返されます。 結果セットを単一のパブリッシャー、パブリケーション、またはパブリッシュされたデータベースに制限するには、それぞれ @publisher@publication、または @publisher_dbを指定します。

  3. ディストリビューション データベースのディストリビューターで、 sp_replmonitorhelpsubscriptionを実行します。 これにより、このディストリビューターを使用するすべてのサブスクリプションの監視情報が返されます。 結果セットを単一のパブリッシャー、パブリケーション、またはパブリッシュされたデータベースに属するサブスクリプションに制限するには、それぞれ @publisher@publication、または @publisher_dbを指定します。

サブスクライバーでの適用を待機しているトランザクションコマンドを監視するには

  1. ディストリビューション データベースのディストリビューターで、 sp_replmonitorsubscriptionpendingcmdsを実行します。 これにより、このディストリビューターを使用するすべてのサブスクリプションで保留中のすべてのコマンドの監視情報が返されます。 単一のパブリッシャー、サブスクライバー、パブリケーション、またはパブリッシュされたデータベースに属するサブスクリプションに対して保留中のコマンドに結果セットを制限するには、それぞれ @publisher@subscriber@publication、または @publisher_dbを指定します。

アップロードまたはダウンロード待機中のマージ変更を確認するために

  1. パブリッシャー側のパブリケーション データベースで、 sp_showpendingchangesを実行します。 購読者にレプリケートされるのを待っている変更に関する情報を示す結果セットが返されます。 結果セットを単一のパブリケーションまたはアーティクルに属する変更に限定するには、それぞれ @publication または @articleを指定します。

  2. サブスクリプション データベースのサブスクライバーで、 sp_showpendingchangesを実行します。 これにより、パブリッシャーへのレプリケートを待機している変更に関する情報を示す結果セットが返されます。 結果セットを単一のパブリケーションまたはアーティクルに属する変更に限定するには、それぞれ @publication または @articleを指定します。

マージ エージェント セッションを監視するには

  1. ディストリビューション データベースのディストリビューターで、 sp_replmonitorhelpmergesessionを実行します。 これにより、このディストリビューターを使用するすべてのサブスクリプションのすべてのマージ エージェント セッションの監視情報 ( Session_idを含む) が返されます。 MSmerge_sessionsシステム テーブルに対してクエリを実行して、Session_idを取得することもできます。

  2. ディストリビューション データベースのディストリビューターで、 sp_replmonitorhelpmergesessiondetailを実行します。 @session_idの手順 1 の Session_id 値を指定 します。 これにより、セッションに関する詳細なモニター情報が表示されます。

  3. 対象のセッションごとに手順 2 を繰り返します。

サブスクライバーからのプル サブスクリプションのマージ エージェント セッションを監視するには

  1. サブスクリプション データベースのサブスクライバーで、 sp_replmonitorhelpmergesessionを実行します。 特定のサブスクリプションに対して、 @publisher@publication、および @publisher_dbのパブリケーション データベースの名前を指定します。 これにより、このサブスクリプションの最後の 5 つのマージ エージェント セッションの監視情報が返されます。 結果セット内の関心のあるセッションの Session_id の値に注意してください。

  2. サブスクリプション データベースのサブスクライバーで、 sp_replmonitorhelpmergesessiondetailを実行します。 手順1で指定したSession_id値を@session_idに指定します。 セッションに関する詳細な監視情報が表示されます。

  3. 対象のセッションごとに手順 2 を繰り返します。

パブリケーションのモニターしきい値メトリックを表示および変更するには

  1. ディストリビューション データベースのディストリビューターで、 sp_replmonitorhelppublicationthresholdsを実行します。 これにより、このディストリビューターを使用するすべてのパブリケーションに対して設定された監視しきい値が返されます。 しきい値を監視する結果セットを、単一のパブリッシャーデータベースまたはパブリッシュされたデータベースに属するパブリケーション、または単一のパブリケーションに制限するには、それぞれ @publisher@publisher_db、または @publicationを指定します。 変更する必要があるしきい値の Metric_id の値に注意してください。 詳細については、「 レプリケーション モニターでのしきい値と警告の設定」を参照してください。

  2. ディストリビューション データベースのディストリビューターで、 sp_replmonitorchangepublicationthresholdを実行します。 必要に応じて、次を指定します。

    • ステップ1で得られたMetric_id値を@metric_id用に。

    • @valueのモニターしきい値メトリックの新しい値。

    • このしきい値に達したときにログに記録されるアラートの@shouldalertの値は 1、アラートが必要ない場合は値 0 です。

    • 監視しきい値メトリックを有効にする@modeの場合は値 1、無効にするには値 2 です。

レプリケーション管理オブジェクト (RMO)

サブスクライバーでマージ パブリケーションのサブスクリプションを監視するには

  1. ServerConnection クラスを使用してサブスクライバーへの接続を作成します。

  2. MergeSubscriberMonitor クラスのインスタンスを作成し、サブスクリプションのPublisherPublicationPublisherDBSubscriberDBプロパティを設定し、手順 1 で作成したServerConnectionConnectionContextプロパティを設定します。

  3. 次のいずれかのメソッドを呼び出して、このサブスクリプションのマージ エージェント セッションに関する情報を返します。

    • GetSessionsSummary - 最後の 5 つのマージ エージェント セッションに関する情報を含む MergeSessionSummary オブジェクトの配列を返します。 関心のあるセッションの SessionId 値に注意してください。

    • GetSessionsSummary - 過去数時間に発生したマージ エージェント セッションに関する情報を持つ MergeSessionSummary オブジェクトの配列を hours パラメーターとして返します (過去 5 セッションまで)。 関心のあるセッションの SessionId 値に注意してください。

    • GetLastSessionSummary - 最後のマージ エージェント セッションに関する情報を含む MergeSessionSummary オブジェクトを返します。 このセッションの SessionId 値に注意してください。

    • GetSessionsSummaryDataSet - 最後の 5 つのマージ エージェント セッション (各行に 1 つずつ) に関する情報を含む DataSet オブジェクトを返します。 関心のあるセッションの Session_id 列の値に注意してください。

    • GetLastSessionSummaryDataRow - 最後のマージ エージェント セッションに関する情報を含む DataRow オブジェクトを返します。 このセッションの Session_id 列の値に注意してください。

  4. (省略可能)mss として渡されたMergeSessionSummary オブジェクトのデータを更新するRefreshSessionSummaryを呼び出すかdrRefresh として渡されたDataRow オブジェクトのデータを更新するRefreshSessionSummaryを呼び出します。

  5. 手順 3 で取得したセッション ID を使用して、次のいずれかのメソッドを呼び出して、特定のセッションの詳細に関する情報を返します。

ディストリビューターのすべてのパブリケーションのレプリケーション プロパティを監視するには

  1. ServerConnection クラスを使用してディストリビューターへの接続を作成します。

  2. ReplicationMonitor クラスのインスタンスを作成します。

  3. ConnectionContext プロパティを、手順 1 で作成したServerConnectionに設定します。

  4. LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。

  5. 次の 1 つ以上のメソッドを実行して、このディストリビューターを使用するすべてのパブリッシャーのレプリケーション情報を返します。

    • EnumDistributionAgents - このディストリビューターのすべてのディストリビューション エージェントに関する情報を含む DataSet オブジェクトを返します。

    • EnumErrorRecords - ディストリビューターに格納されているエラーに関する情報を含む DataSet オブジェクトを返します。

    • EnumLogReaderAgents - ディストリビューターのすべてのログ リーダー エージェントに関する情報を含む DataSet オブジェクトを返します。

    • EnumMergeAgents - ディストリビューターのすべてのマージ エージェントに関する情報を含む DataSet オブジェクトを返します。

    • EnumMiscellaneousAgents - ディストリビューターの他のすべてのレプリケーション エージェントに関する情報を含む DataSet オブジェクトを返します。

    • EnumPublishers - このディストリビューターのすべてのパブリッシャーに関する情報を含む DataSet オブジェクトを返します。

    • EnumPublishers2 - このディストリビューターを使用するパブリッシャーを返す DataSet オブジェクトを返します。

    • EnumQueueReaderAgents - ディストリビューターのすべてのキュー リーダー エージェントに関する情報を含む DataSet オブジェクトを返します。

    • EnumQueueReaderAgentSessionDetails - 指定したキュー リーダー エージェントとセッションに関する詳細を含む DataSet オブジェクトを返します。

    • EnumQueueReaderAgentSessions - 指定したキュー リーダー エージェントに関するセッション情報を含む DataSet オブジェクトを返します。

    • EnumSnapshotAgents - ディストリビューターのすべてのスナップショット エージェントに関する情報を含む DataSet オブジェクトを返します。

ディストリビューターで特定のパブリッシャーのパブリケーション プロパティを監視するには

  1. ServerConnection クラスを使用してディストリビューターへの接続を作成します。

  2. 次のいずれかの方法で PublisherMonitor オブジェクトを取得します。

    • PublisherMonitor クラスのインスタンスを作成します。 Publisher の Name プロパティを設定し、 ConnectionContext プロパティを手順 1 で作成した ServerConnection に設定します。 LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドが falseを返す場合は、パブリッシャー名が正しく定義されていないか、パブリケーションが存在しません。

    • PublisherMonitors プロパティを通してアクセスすることで、既存のReplicationMonitor オブジェクトのPublisherMonitorCollection を取得します。

  3. 次の 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 オブジェクトを返します。

ディストリビューターで特定のパブリケーションのプロパティを監視するには

  1. ServerConnection クラスを使用してディストリビューターへの接続を作成します。

  2. 次のいずれかの方法で PublicationMonitor オブジェクトを取得します。

  3. 次の 1 つ以上のメソッドを実行して、このパブリケーションに関する情報を返します。

    • EnumErrorRecords - 指定したエラーに関するエラー レコードを含む DataSet オブジェクトを返します。

    • EnumLogReaderAgent - このパブリケーションのログ リーダー エージェントに関する情報を含む DataSet オブジェクトを返します。

    • EnumMonitorThresholds - このパブリケーションに設定されたモニター警告しきい値に関する情報を含む DataSet オブジェクトを返します。

    • EnumQueueReaderAgent - このパブリケーションで使用されるキュー リーダー エージェントに関する情報を含む DataSet オブジェクトを返します。

    • EnumSnapshotAgent - このパブリケーションのスナップショット エージェントに関する情報を含む DataSet オブジェクトを返します。

    • EnumSubscriptions - このパブリケーションへのサブスクリプションに関する情報を含む DataSet オブジェクトを返します。

    • EnumSubscriptions2- 指定されたSubscriptionResultOptionに基づいて、このパブリケーションへのサブスクリプションに関する追加情報を含むDataSet オブジェクトを返します。

    • EnumTracerTokenHistory - 指定したトレーサー トークンの待機時間情報を含む DataSet オブジェクトを返します。

    • EnumTracerTokens - このパブリケーションに挿入されたすべてのトレーサー トークンに関する情報を含む DataSet オブジェクトを返します。

サブスクライバーで適用待ちのトランザクションコマンドを監視するには

  1. ServerConnection クラスを使用してディストリビューターへの接続を作成します。

  2. 次のいずれかの方法で PublicationMonitor オブジェクトを取得します。

  3. PendingCommandInfo オブジェクトを返すTransPendingCommandInfo メソッドを実行します。

  4. この PendingCommandInfo オブジェクトのプロパティを使用して、保留中のコマンドの推定数と、これらのコマンドの配信が完了するまでにかかる時間を決定します。

パブリケーションのモニター警告しきい値を設定するには

  1. ServerConnection クラスを使用してディストリビューターへの接続を作成します。

  2. 次のいずれかの方法で PublicationMonitor オブジェクトを取得します。

  3. EnumMonitorThresholds メソッドを実行します。 MonitorThreshold オブジェクトに返されたArrayListの現在のしきい値の設定に注意してください。

  4. ChangeMonitorThreshold メソッドを実行します。 次のパラメーターを渡します。

    • metricID - 次の表の監視しきい値メトリックを表す Int32 値。

      価値 説明
      1 expiration - トランザクション パブリケーションへのサブスクリプションの有効期限が間近に迫っていることを監視します。
      2 latency - トランザクション パブリケーションへのサブスクリプションのパフォーマンスを監視します。
      4 mergeexpiration - マージ パブリケーションのサブスクリプションの有効期限が間近に迫っていることを監視します。
      5 mergeslowrunduration - 低帯域幅 (ダイヤルアップ) 接続でのマージ同期の期間を監視します。
      6 mergefastrunduration - 高帯域幅 (LAN) 接続でのマージ同期の期間を監視します。
      7 mergefastrunspeed - 高帯域幅 (LAN) 接続でのマージ同期の同期速度を監視します。
      8 mergeslowrunspeed - 低帯域幅 (ダイヤルアップ) 接続でのマージ同期の同期速度を監視します。
    • enable - Boolean パブリケーションに対してメトリックが有効になっているかどうかを示す値。

    • thresholdValue - しきい値を設定する整数値。

    • shouldAlert - このしきい値がアラートを生成する必要があるかどうかを示す整数。