共用方式為


以程式設計方式監視複寫

復寫監視器是一種圖形化工具,可讓您監視複製拓撲。 您可以使用 Transact-SQL 複寫預存程式或復寫管理物件(RMO),以程式設計方式存取相同的監視數據。 這些物件可讓您對下列工作進行程式設計:

  • 監視發行者、發行集和訂閱的狀態。

  • 監視一或多個訂閱者的合併代理程式會話。

  • 監控交易命令,等候應用在一個或多個訂閱者上。

  • 定義臨界指標,以判斷出版物何時需要介入。

  • 監視追蹤令牌的狀態。

本主題內容:

Transact-SQL

複寫管理物件 (RMO)

Transact-SQL

監視散發者的發行者、發行集和訂閱

  1. 在散發資料庫的散發者端,執行 sp_replmonitorhelppublisher。 這會傳回使用此散發者的所有發行者的監視資訊。 若要將結果集限制為單一發行者,請指定 @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。 從步驟 1 指定Session_id值給@session_id。 這會顯示會話的詳細監視資訊。

  3. 針對感興趣的每個會話重複步驟 2。

若要監視訂閱者提取訂閱的合併代理程式會話

  1. 在訂閱資料庫的訂閱者端,執行 sp_replmonitorhelpmergesession。 針對指定的訂閱,指定 @publisher@publication,以及 @publisher_db發行集資料庫的名稱。 這會傳回此訂用帳戶最後五個合併代理程式會話的監視資訊。 請注意結果集中感興趣的會話 Session_id 值。

  2. 在訂閱資料庫的訂閱者端,執行 sp_replmonitorhelpmergesessiondetail。 請針對@session_id,從步驟 1 指定Session_id值。 這會顯示會話的詳細監視資訊。

  3. 針對感興趣的每個會話重複步驟 2。

若要檢視和修改出版物的監控閾值指標

  1. 在發行資料庫的發行者端,執行 sp_replmonitorhelppublicationthresholds。 這會傳回為使用此散發者的所有出版物設定的監控閾值。 若要將監視臨界值的結果集限制為屬於單一發行者或單一發行資料庫或單一發行集的出版物,請分別指定 @publisher@publisher_db@publication。 請注意任何必須變更之臨界值 Metric_id 的值。 如需相關資訊,請參閱 在複寫監控器中設定臨界值和警告

  2. 在配發資料庫的配發者端,執行 sp_replmonitorchangepublicationthreshold。 視需要指定下列項目:

    • 針對 @metric_id ,在步驟 1 中取得 的Metric_id值。

    • @value監視閾值計量的新值。

    • 當達到此臨界值時,要記錄警示的 @shouldalert 值為1,如果不需要警示,則為0

    • @mode的值為 1,可啟用監視閾值計量,或值為 2 以停用它。

複寫管理物件 (RMO)

在訂閱者端監視合併式發行集的訂閱

  1. 使用 ServerConnection 類別建立與「訂閱者」的連接。

  2. 建立MergeSubscriberMonitor類別的實例,並設定PublisherPublicationPublisherDBSubscriberDB屬性以訂用帳戶,然後將ConnectionContext屬性設定為在步驟 1 中建立的ServerConnection

  3. 呼叫下列其中一種方法,以傳回此訂用帳戶的合併代理程式會話資訊:

  4. (選擇性)呼叫 RefreshSessionSummary 以重新整理以 mss 傳遞的對象數據MergeSessionSummary,或呼叫 RefreshSessionSummary 以重新整理以 drRefresh 傳遞之DataRow物件中的數據。

  5. 使用步驟 3 中取得的會話標識符,呼叫下列其中一種方法來傳回特定會話詳細數據的相關信息:

監視分發伺服器上所有發行集的複寫屬性

  1. 使用 ServerConnection 類別建立與散發者的連接。

  2. 建立 ReplicationMonitor 類別的執行個體。

  3. ConnectionContext 屬性設定為 ServerConnection 在步驟 1 中建立的 。

  4. 呼叫 LoadProperties 方法以取得物件的屬性。

  5. 執行下列一或多個方法來傳回使用此散發者之所有發行者的復寫資訊。

若要監視散發者端特定發行者的發行集屬性

  1. 使用 ServerConnection 類別建立與散發者的連接。

  2. 以下列其中一種方式取得 PublisherMonitor 物件。

  3. 執行下列一或多個方法,傳回屬於這個發行者之所有發行集的復寫資訊。

若要監視散發者端特定發行集的屬性

  1. 使用 ServerConnection 類別建立與散發者的連接。

  2. 以下列其中一種方式取得 PublicationMonitor 物件。

  3. 執行下列一或多個方法來傳回此發行集的相關信息。

正在監控等待應用於訂閱者端的交易命令

  1. 使用 ServerConnection 類別建立與散發者的連接。

  2. 以下列其中一種方式取得 PublicationMonitor 物件。

  3. 執行 方法 TransPendingCommandInfo ,這個方法會 PendingCommandInfo 傳回 物件。

  4. 使用此物件的 屬性 PendingCommandInfo 來判斷暫止命令的估計數目,以及完成這些命令傳遞所需的時間長度。

設定出版物的監視警告臨界值

  1. 使用 ServerConnection 類別建立與散發者的連接。

  2. 以下列其中一種方式取得 PublicationMonitor 物件。

  3. 執行EnumMonitorThresholds方法。 請注意ArrayListMonitorThreshold物件中回傳的當前臨界值設定。

  4. 執行ChangeMonitorThreshold方法。 傳遞下列參數:

    • metricID - 值 Int32 ,表示下表中的監視閾值計量:

      價值觀 說明
      1 expiration - 監視交易式發行集訂閱即將到期。
      2 latency - 監視交易式發行集訂閱的效能。
      4 mergeexpiration - 監控合併出版物訂閱的即將到期。
      5 mergeslowrunduration - 透過低頻寬(撥號)連線監視合併同步處理的持續時間。
      6 mergefastrunduration - 透過高頻寬 (LAN) 連線監視合併同步處理的持續時間。
      7 mergefastrunspeed - 透過高頻寬(LAN)連線監控合併同步的同步率。
      8 mergeslowrunspeed - 監控透過低頻寬撥號連線進行的合併同步的同步速率。
    • 啟用 - Boolean 值,指出該計量是否已為發行集啟用。

    • thresholdValue - 設定臨界值的整數值。

    • shouldAlert - 整數,指出此臨界值是否應該產生警示。