プログラムによるレプリケーションの監視
レプリケーション モニターは、レプリケーション トポロジを監視するためのグラフィカル ツールです。 Transact-SQL レプリケーション ストアド プロシージャまたはレプリケーション管理オブジェクト (RMO) を使用して、同じ監視データにプログラムでアクセスできます。 このオブジェクトにより、次のタスクをプログラムできます。
パブリッシャー、パブリケーション、およびサブスクリプションの状態を監視する。
1 つ以上のサブスクライバーにおけるマージ エージェント セッションを監視する。
1 つ以上のサブスクライバーで適用を待機しているトランザクション コマンドを監視する。
パブリケーションにユーザーの介入が必要となるしきい値の基準を定義する。
トレーサー トークンのステータスを監視する。
このトピックの内容:
Transact-SQL
ディストリビューターからパブリッシャー、パブリケーション、サブスクリプションを監視するには
ディストリビューターのディストリビューション データベースで、 sp_replmonitorhelppublisherを実行します。 これにより、このディストリビューターを利用している全パブリッシャーの監視情報が返されます。 結果セットを 1 つのパブリッシャーに制限するには、 @publisherを指定します。
ディストリビューターのディストリビューション データベースで、 sp_replmonitorhelppublicationを実行します。 これにより、このディストリビューターを利用している全パブリケーションの監視情報が返されます。 結果セットを単一のパブリッシャー、パブリケーション、またはパブリッシュされたデータベースに制限するには、それぞれ @publisher、 @publication、または @publisher_dbを指定します。
ディストリビューターのディストリビューション データベースで、 sp_replmonitorhelpsubscriptionを実行します。 これにより、このディストリビューターを利用しているすべてのサブスクリプションの監視情報が返されます。 結果セットを単一のパブリッシャー、パブリケーション、または発行済みデータベースに属するサブスクリプションに制限するには、それぞれ @publisher、 @publication、または @publisher_dbを指定します。
サブスクライバーで適用を待機しているトランザクション コマンドを監視するには
- ディストリビューターのディストリビューション データベースで、 sp_replmonitorsubscriptionpendingcmdsを実行します。 これにより、このディストリビューターを利用しているすべてのサブスクリプションの、待機中の全コマンドに関する監視情報が返されます。 単一のパブリッシャー、サブスクライバー、パブリケーション、またはパブリッシュされたデータベースに属するサブスクリプションに対して保留中のコマンドに結果セットを制限するには、それぞれ @publisher、@subscriber、@publication、または@publisher_dbを指定します。
アップロードまたはダウンロードされるのを待機しているマージ変更を監視するには
パブリッシャーのパブリケーション データベースで、 sp_showpendingchangesを実行します。 返される結果セットには、サブスクライバーへのレプリケートを待機している変更に関する情報が示されます。 結果セットを単一のパブリケーションまたはアーティクルに属する変更に制限するには、それぞれ @publication または @articleを指定します。
サブスクライバーのサブスクリプション データベースで、 sp_showpendingchangesを実行します。 返される結果セットには、パブリッシャーへのレプリケートを待機している変更に関する情報が示されます。 結果セットを単一のパブリケーションまたはアーティクルに属する変更に制限するには、それぞれ @publication または @articleを指定します。
マージ エージェント セッションを監視するには
ディストリビューターのディストリビューション データベースで、 sp_replmonitorhelpmergesessionを実行します。 これにより、このディストリビューターを利用する全サブスクリプションのすべてのマージ エージェント セッションに関する監視情報 ( Session_idを含む) が返されます。 また、 MSmerge_sessions システム テーブルにクエリを実行することでも、 Session_id を取得できます。
ディストリビューターのディストリビューション データベースで、 sp_replmonitorhelpmergesessiondetailを実行します。 @session_idの手順 1 の Session_id 値を指定 します。 これにより、セッションに関する詳細な監視情報が表示されます。
目的の各セッションについて、手順 2. を実行します。
サブスクライバーからのプル サブスクリプションのマージ エージェント セッションを監視するには
サブスクライバーのサブスクリプション データベースで、 sp_replmonitorhelpmergesessionを実行します。 特定のサブスクリプションに対 して、@publisher、 @publication、およびパブリケーション データベースの名前を @publisher_dbに指定します。 これにより、このサブスクリプションの過去 5 回のマージ エージェント セッションに関する監視情報が返されます。 結果セットで、目的のセッションの Session_id の値を確認します。
サブスクライバーのサブスクリプション データベースで、 sp_replmonitorhelpmergesessiondetailを実行します。 @session_idの手順 1 の Session_id 値を指定 します。 これにより、セッションに関する詳細な監視情報が表示されます。
目的の各セッションについて、手順 2. を実行します。
パブリケーションのしきい値を表示して変更するには
ディストリビューターのディストリビューション データベースで、 sp_replmonitorhelppublicationthresholdsを実行します。 これにより、このディストリビューターを利用している全パブリケーションの監視しきい値が返されます。 単一のパブリッシャーまたはパブリッシュされたデータベースまたは単一のパブリケーションに属するパブリケーションにしきい値を監視するように結果セットを制限するには、それぞれ @publisher、 @publisher_db、または @publicationを指定します。 変更する必要があるしきい値に対応する Metric_id の値を確認します。 詳細については、「 Set Thresholds and Warnings in Replication Monitor」を参照してください。
ディストリビューターのディストリビューション データベースで、 sp_replmonitorchangepublicationthresholdを実行します。 必要に応じて、次の値を指定します。
@metric_idのステップ1で得られたMetric_id値。
@valueのモニターしきい値メトリックの新しい値。
このしきい値に達したときにログに記録されるアラートの@shouldalertの値は 1、アラートが必要ない場合は値 0 です。
監視しきい値メトリックを有効にする@modeの場合は 1、無効にするには値 2。
レプリケーション管理オブジェクト (RMO)
サブスクライバーでマージ パブリケーションのサブスクリプションを監視するには
ServerConnection クラスを使用して、サブスクライバーへの接続を作成します。
MergeSubscriberMonitor クラスのインスタンスを作成し、サブスクリプションの Publisher、 Publication、 PublisherDB、 SubscriberDB の各プロパティを設定します。次に、 ConnectionContext プロパティに対し、手順 1. で作成した ServerConnection を設定します。
次のいずれかのメソッドを呼び出して、このサブスクリプションのマージ エージェント セッションの情報を取得します。
GetSessionsSummary - 過去に発生したマージ エージェント セッションの情報を保持する MergeSessionSummary オブジェクトの配列を返します (最大 5 セッション)。 監視対象のすべてのセッションについて、 SessionId 値を確認してください。
GetSessionsSummary - 過去に発生したマージ エージェント セッションの情報を保持する MergeSessionSummary パラメーターに指定された期間内に発生したマージ エージェント セッションの情報を保持する T:Microsoft.SqlServer.Replication.MergeSessionSummary オブジェクトの配列を返します (最大 5 セッション)。 監視対象のすべてのセッションについて、 SessionId 値を確認してください。
GetLastSessionSummary - 前回のマージ エージェント セッションの情報を保持する MergeSessionSummary オブジェクトを返します。 このセッションの SessionId 値を確認してください。
GetSessionsSummaryDataSet - 過去のマージ エージェント セッション (最大 5 セッション) の情報を、1 行あたり 1 セッションの形式で保持する DataSet オブジェクトを返します。 監視対象のすべてのセッションについて、 Session_id 列の値を確認してください。
GetLastSessionSummaryDataRow - 前回のマージ エージェント セッションの情報を保持する DataRow オブジェクトを返します。 このセッションの Session_id 列の値を確認してください。
(省略可) RefreshSessionSummary を呼び出して、 MergeSessionSummary として渡された T:Microsoft.SqlServer.Replication.MergeSessionSummary オブジェクトのデータを更新します。または、 RefreshSessionSummary を呼び出して、 DataRow として渡された T:System.Data.DataRowを実行します。
手順 3. で取得したセッション ID を使用して次のいずれかのメソッドを呼び出し、特定のセッションの詳細情報を取得します。
GetSessionDetails- 指定された sessionID のオブジェクトのMergeSessionDetail配列を返します。
GetSessionDetailsDataSet - 指定した DataSetsessionID の情報を含む オブジェクトを返します。
ディストリビューターですべてのパブリケーションについてレプリケーション プロパティを監視するには
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 から取得します。このコレクションには、既存の PublisherMonitors オブジェクトの ReplicationMonitor プロパティを使用してアクセスできます。
次の 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 から取得します。このコレクションには、既存の PublicationMonitors オブジェクトの PublisherMonitor プロパティを使用してアクセスできます。
次の 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 から取得します。このコレクションには、既存の PublicationMonitors オブジェクトの PublisherMonitor プロパティを使用してアクセスできます。
TransPendingCommandInfo メソッドを実行して PendingCommandInfo オブジェクトを取得します。
この PendingCommandInfo オブジェクトのプロパティを使用して、保留状態の推定コマンド数と、コマンドを配信を完了するまでの時間を調べます。
パブリケーションに対して監視警告のしきい値を設定するには
ServerConnection クラスを使用して、ディストリビューターへの接続を作成します。
次のいずれかの方法で PublicationMonitor オブジェクトを取得します。
PublicationMonitor クラスのインスタンスを作成します。 パブリケーションの DistributionDBName、 PublisherName、 PublicationDBName、 Name の各プロパティを設定し、 ConnectionContext プロパティに手順 1. で作成した ServerConnection を設定します。 LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから
false
が返された場合、パブリケーションのプロパティが正しく定義されていないか、パブリケーションが存在していません。PublicationMonitorCollection から取得します。このコレクションには、既存の PublicationMonitors オブジェクトの PublisherMonitor プロパティを使用してアクセスできます。
EnumMonitorThresholds メソッドを実行します。 返された ArrayList オブジェクトの MonitorThreshold で、現在のしきい値設定を確認します。
ChangeMonitorThreshold メソッドを実行します。 次のパラメーターを指定します。
metricID - 監視しきい値の基準を表す Int32 値です。次の表に示す値を使用します。
値 説明 1 expiration
- トランザクション パブリケーションへのサブスクリプションに期限が迫っていないかを監視します。2 latency
- トランザクション パブリケーションへのサブスクリプションのパフォーマンスを監視します。4 mergeexpiration
- マージ パブリケーションへのサブスクリプションに期限が迫っていないかを監視します。5 mergeslowrunduration
- 低速回線 (ダイヤルアップ) 接続でのマージの同期時間を監視します。6 mergefastrunduration
- 高帯域 (LAN) 接続でのマージ同期の期間を監視します。7 mergefastrunspeed
: 高帯域幅 (LAN) 接続経由でのマージ同期の同期速度を監視します。8 mergeslowrunspeed
- 低速回線 (ダイヤルアップ) 接続でのマージの同期速度を監視します。enable - Boolean 値です。
thresholdValue - しきい値を設定する整数値です。
shouldAlert - このしきい値に対して警告を生成するかどうかを示す整数値です。