レプリケーションをプログラムから監視する方法 (レプリケーション Transact-SQL プログラミング)

レプリケーション モニタは、レプリケーション トポロジを監視するためのグラフィカル ツールです。レプリケーション ストアド プロシージャを使用することで、同じ監視データにプログラムからアクセスできます。このストアド プロシージャにより、次のタスクをプログラムできます。

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

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

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

  • パブリケーションにユーザーの介入が必要となるしきい値の基準を定義する。

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

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

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

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

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

  • ディストリビュータのディストリビューション データベースで、sp_replmonitorsubscriptionpendingcmds を実行します。これにより、このディストリビュータを利用しているすべてのサブスクリプションの、待機中の全コマンドに関する監視情報が返されます。結果セットを 1 つのパブリッシャ、サブスクライバ、パブリケーション、またはパブリッシュ済みデータベースに属するサブスクリプションに適用される待機中コマンドに限定するには、それぞれ @publisher@subscriber@publication、または @publisher_db を指定します。

アップロードまたはダウンロードされるのを待機しているマージ変更を監視するには

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

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

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

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

  2. ディストリビュータのディストリビューション データベースで、sp_replmonitorhelpmergesessiondetail を実行します。手順 1. で取得した Session_id の値を @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 を実行します。これにより、このディストリビュータを利用している全パブリケーションの監視しきい値が返されます。結果セットを 1 つのパブリッシャ、パブリッシュ済みデータベース、またはパブリケーションに属するパブリケーションに対する監視しきい値に限定するには、それぞれ @publisher@publisher_db、または @publication を指定します。変更する必要があるしきい値に対応する Metric_id の値を確認します。詳細については、「レプリケーション モニタのしきい値と警告の設定」を参照してください。

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

    • 手順 1. で得た Metric_id の値を @metric_id に指定します。

    • 監視しきい値の新しい値を @value に指定します。

    • このしきい値に到達したときに警告をログに記録するには、@shouldalert1 を指定します。警告が不要な場合には、0 を指定します。

    • 監視しきい値を有効にするには @mode1 を指定し、無効にするには 2 を指定します。