復寫監視器是一種圖形化工具,可讓您監視複製拓撲。 您可以使用 Transact-SQL 複寫預存程式或復寫管理物件(RMO),以程式設計方式存取相同的監視數據。 這些物件可讓您對下列工作進行程式設計:
監視發行者、發行集和訂閱的狀態。
監視一或多個訂閱者的合併代理程式會話。
監控交易命令,等候應用在一個或多個訂閱者上。
定義臨界指標,以判斷出版物何時需要介入。
監視追蹤令牌的狀態。
本主題內容:
Transact-SQL
監視散發者的發行者、發行集和訂閱
在散發資料庫的散發者端,執行 sp_replmonitorhelppublisher。 這會傳回使用此散發者的所有發行者的監視資訊。 若要將結果集限制為單一發行者,請指定 @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。 從步驟 1 指定Session_id值給@session_id。 這會顯示會話的詳細監視資訊。
針對感興趣的每個會話重複步驟 2。
若要監視訂閱者提取訂閱的合併代理程式會話
在訂閱資料庫的訂閱者端,執行 sp_replmonitorhelpmergesession。 針對指定的訂閱,指定 @publisher、 @publication,以及 @publisher_db發行集資料庫的名稱。 這會傳回此訂用帳戶最後五個合併代理程式會話的監視資訊。 請注意結果集中感興趣的會話 Session_id 值。
在訂閱資料庫的訂閱者端,執行 sp_replmonitorhelpmergesessiondetail。 請針對@session_id,從步驟 1 指定Session_id值。 這會顯示會話的詳細監視資訊。
針對感興趣的每個會話重複步驟 2。
若要檢視和修改出版物的監控閾值指標
在發行資料庫的發行者端,執行 sp_replmonitorhelppublicationthresholds。 這會傳回為使用此散發者的所有出版物設定的監控閾值。 若要將監視臨界值的結果集限制為屬於單一發行者或單一發行資料庫或單一發行集的出版物,請分別指定 @publisher、@publisher_db 或 @publication。 請注意任何必須變更之臨界值 Metric_id 的值。 如需相關資訊,請參閱 在複寫監控器中設定臨界值和警告。
在配發資料庫的配發者端,執行 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 ,其中包含最近五個合併代理程式會話的相關信息。 記下任何感興趣的會話的 SessionId 值。
GetSessionsSummary - 傳回一個 MergeSessionSummary 物件的陣列,其中包含在作為 hours 參數傳入的過去小時內發生的合併代理會話的資訊(最多包含最近的五次工作階段)。 注意在意的任何會話的SessionId 值。
GetLastSessionSummary - 傳回物件,其中包含上一個 MergeSessionSummary 合併代理程式會話的資訊。 記下 SessionId 此會話的值。
GetSessionsSummaryDataSet - 傳回物件,其中包含最多最後五個 DataSet 合併代理程式會話的資訊,每個數據列各一個。 請注意感興趣的任何會話的 Session_id 欄的值。
GetLastSessionSummaryDataRow - 傳回物件,其中包含上一個 DataRow 合併代理程式會話的資訊。 請注意此工作階段的 Session_id 資料行的值。
(選擇性)呼叫 RefreshSessionSummary 以重新整理以 mss 傳遞的對象數據MergeSessionSummary,或呼叫 RefreshSessionSummary 以重新整理以 drRefresh 傳遞之DataRow物件中的數據。
使用步驟 3 中取得的會話標識符,呼叫下列其中一種方法來傳回特定會話詳細數據的相關信息:
GetSessionDetails- 傳回所提供 sessionID 的物件陣列MergeSessionDetail。
GetSessionDetailsDataSet - 傳 DataSet 回物件,其中包含指定 sessionID 的資訊。
監視分發伺服器上所有發行集的複寫屬性
使用 ServerConnection 類別建立與散發者的連接。
建立 ReplicationMonitor 類別的執行個體。
將 ConnectionContext 屬性設定為 ServerConnection 在步驟 1 中建立的 。
呼叫 LoadProperties 方法以取得物件的屬性。
執行下列一或多個方法來傳回使用此散發者之所有發行者的復寫資訊。
EnumDistributionAgents - 傳回一個 DataSet 物件,其中包含此分發伺服器所有分發代理程式的資訊。
EnumErrorRecords - 傳 DataSet 回 物件,其中包含儲存在散發者端之錯誤的相關信息。
EnumLogReaderAgents - 返回一個DataSet物件,其中包含發行者端所有記錄閱讀器代理的相關信息。
EnumMergeAgents - 傳 DataSet 回 物件,其中包含散發者端所有合併代理程式的相關信息。
EnumMiscellaneousAgents - 傳 DataSet 回 物件,其中包含散發者端所有其他複寫代理程式的相關信息。
EnumPublishers - 傳回DataSet物件,其中包含此配發者與所有發行者的相關資訊。
EnumPublishers2 - 傳 DataSet 回對象,這個物件會傳回使用此散發者的發行者。
EnumQueueReaderAgents - 傳 DataSet 回 物件,其中包含散發者端所有佇列讀取器代理程序的相關信息。
EnumQueueReaderAgentSessionDetails - 傳 DataSet 回 物件,其中包含指定之佇列讀取器代理程式和會話的詳細數據。
EnumQueueReaderAgentSessions - 傳 DataSet 回 物件,其中包含指定之佇列讀取器代理程式的會話資訊。
EnumSnapshotAgents - 傳回一個包含所有發佈者端快照集代理程序資訊的物件。
若要監視散發者端特定發行者的發行集屬性
使用 ServerConnection 類別建立與散發者的連接。
以下列其中一種方式取得 PublisherMonitor 物件。
建立 PublisherMonitor 類別的執行個體。 將Name屬性設定為發行者,並將ConnectionContext屬性設定為在步驟1中建立的ServerConnection。 呼叫 LoadProperties 方法以取得物件的屬性。 如果這個方法傳
false回 ,則發行者名稱定義不正確或發行集不存在。PublisherMonitorCollection PublisherMonitors透過現有 ReplicationMonitor 物件的屬性存取。
執行下列一或多個方法,傳回屬於這個發行者之所有發行集的復寫資訊。
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 - 傳回一個包含此散發者端所有發行集訂閱資訊的物件。
若要監視散發者端特定發行集的屬性
使用 ServerConnection 類別建立與散發者的連接。
以下列其中一種方式取得 PublicationMonitor 物件。
建立 PublicationMonitor 類別的執行個體。 設定發行集的DistributionDBName、PublisherName、PublicationDBName、與Name屬性,並將ConnectionContext屬性設定為在步驟 1 中建立的ServerConnection。 呼叫 LoadProperties 方法以取得物件的屬性。 如果這個方法傳
false回 ,表示發行集屬性定義不正確或發行集不存在。透過現有 PublisherMonitor 物件的 PublicationMonitors 屬性存取PublicationMonitorCollection。
執行下列一或多個方法來傳回此發行集的相關信息。
EnumErrorRecords - 傳 DataSet 回 物件,其中包含有關指定之錯誤的錯誤記錄。
EnumLogReaderAgent: 返回包含該出版物的日誌讀取代理信息的DataSet物件。
EnumMonitorThresholds - 返回一個 DataSet 物件,其中包含有關此發行集設定的監視器警告臨界值的信息。
EnumQueueReaderAgent - 傳回 DataSet 物件,其中包含有關此發行集所使用之佇列讀取代理程式的資訊。
EnumSnapshotAgent - 回傳包含此發行集的快照代理程式相關資訊的 DataSet 物件。
EnumSubscriptions - 回傳一個 DataSet 物件,其中包含對此出版物的訂閱資訊。
EnumSubscriptions2 - 傳回 DataSet 物件,其中包含根據所提供的 SubscriptionResultOption 訂閱發行集的其他資訊。
EnumTracerTokenHistory - 傳 DataSet 回 物件,其中包含指定之追蹤標記的延遲資訊。
EnumTracerTokens - 回傳一個包含所有插入此出版物中的追蹤標記資訊的物件。
正在監控等待應用於訂閱者端的交易命令
使用 ServerConnection 類別建立與散發者的連接。
以下列其中一種方式取得 PublicationMonitor 物件。
建立 PublicationMonitor 類別的執行個體。 設定發行集的 DistributionDBName、PublisherName、PublicationDBName 和 Name 屬性,並將 ConnectionContext 屬性設定為在步驟 1 中建立的 ServerConnection。 呼叫 LoadProperties 方法以取得物件的屬性。 如果這個方法傳
false回 ,表示發行集屬性定義不正確或發行集不存在。透過現有 PublisherMonitor 物件的 PublicationMonitors 屬性存取PublicationMonitorCollection。
執行 方法 TransPendingCommandInfo ,這個方法會 PendingCommandInfo 傳回 物件。
使用此物件的 屬性 PendingCommandInfo 來判斷暫止命令的估計數目,以及完成這些命令傳遞所需的時間長度。
設定出版物的監視警告臨界值
使用 ServerConnection 類別建立與散發者的連接。
以下列其中一種方式取得 PublicationMonitor 物件。
建立 PublicationMonitor 類別的執行個體。 設定發行集的DistributionDBName、 PublicationDBNamePublisherName、 與 Name 屬性,並將 屬性設定ConnectionContext為ServerConnection在步驟 1 中建立的 。 呼叫 LoadProperties 方法以取得物件的屬性。 如果這個方法傳
false回 ,表示發行集屬性定義不正確或發行集不存在。從 PublicationMonitorCollection 由現有 PublisherMonitor 物件的 PublicationMonitors 屬性存取。
執行EnumMonitorThresholds方法。 請注意ArrayListMonitorThreshold物件中回傳的當前臨界值設定。
執行ChangeMonitorThreshold方法。 傳遞下列參數:
metricID - 值 Int32 ,表示下表中的監視閾值計量:
價值觀 說明 1 expiration- 監視交易式發行集訂閱即將到期。2 latency- 監視交易式發行集訂閱的效能。4 mergeexpiration- 監控合併出版物訂閱的即將到期。5 mergeslowrunduration- 透過低頻寬(撥號)連線監視合併同步處理的持續時間。6 mergefastrunduration- 透過高頻寬 (LAN) 連線監視合併同步處理的持續時間。7 mergefastrunspeed- 透過高頻寬(LAN)連線監控合併同步的同步率。8 mergeslowrunspeed- 監控透過低頻寬撥號連線進行的合併同步的同步速率。啟用 - Boolean 值,指出該計量是否已為發行集啟用。
thresholdValue - 設定臨界值的整數值。
shouldAlert - 整數,指出此臨界值是否應該產生警示。