如何:以程式設計方式監視複寫 (RMO 程式設計)
「複寫監視器」是一個允許您監視複寫拓樸的圖形化工具。您可以使用「複寫管理物件」(RMO) 以程式設計的方式存取相同的監視資料。RMO 類別可以用來設計下列工作:
監視「訂閱者」端最後五次的「合併代理程式」執行結果。
監視「發行者」、發行集和訂閱的狀態。
監視在一或多個「訂閱者」端等候套用的交易式命令。
定義臨界值標準,以決定發行集何時需要介入。
監視追蹤 Token 的狀態。如需詳細資訊,請參閱<如何:針對交易式複寫計算遲延並驗證連接 (RMO 程式設計)>。
若要監視訂閱者端合併式發行集的訂閱
使用 ServerConnection 類別建立與「訂閱者」的連接。
建立 MergeSubscriberMonitor 類別的執行個體、設定訂閱的 Publisher、Publication、PublisherDB、SubscriberDB 屬性,以及將 ConnectionContext 屬性設定為步驟 1 中所建立的 ServerConnection。
呼叫下列其中一個方法,以傳回此訂閱的「合併代理程式」工作階段的相關資訊:
GetSessionsSummary()()()() - 傳回 MergeSessionSummary 物件的陣列,最多提供最後五個「合併代理程式」工作階段的相關資訊。請記下感興趣之任何工作階段的 SessionID()()()() 值。
GetSessionsSummary(Int32) - 傳回 MergeSessionSummary 物件,提供在經過的小時數期間 (如 hours 參數所指定) 所發生的「合併代理程式」工作階段的相關資訊 (最多達最後五個工作階段)。請注意感興趣之任何工作階段的 SessionID()()()() 值。
GetLastSessionSummary - 傳回 MergeSessionSummary 物件,提供最後一個「合併代理程式」工作階段的相關資訊。請注意此工作階段的 SessionID()()()() 值。
GetSessionsSummaryDataSet - 傳回 DataSet 物件,最多提供最後五個「合併代理程式」工作階段的相關資訊 (每個資料列顯示一個工作階段)。請記下感興趣之任何工作階段的 Session_id 資料行值。
GetLastSessionSummaryDataRow - 傳回 DataRow 物件,提供最後一個「合併代理程式」工作階段的相關資訊。請記下此工作階段的 Session_id 資料行值。
(選擇性) 呼叫 RefreshSessionSummary(MergeSessionSummary%),以重新整理以 mss, 所傳遞之 MergeSessionSummary 物件的資料,或呼叫 RefreshSessionSummary(DataRow%),以重新整理以 drRefresh 所傳遞之 DataRow 物件的資料。
使用步驟 3 中取得的工作階段識別碼,呼叫下列其中一個方法來傳回有關特定工作階段詳細資料的資訊。
GetSessionDetails - 針對提供的 sessionID,傳回 MergeSessionDetail 物件的陣列。
GetSessionDetailsDataSet - 傳回 DataSet 物件,提供指定之 sessionID 的相關資訊。
若要監視在散發者端所有發行集的複寫屬性
使用 ServerConnection 類別建立與「散發者」的連接。
建立 ReplicationMonitor 類別的執行個體。
將 ConnectionContext 屬性設定為在步驟 1 中建立的 ServerConnection。
呼叫 LoadProperties 方法以取得物件的屬性。
執行下列其中一或多個方法,以針對使用此散發者的所有發行者傳回複寫資訊。
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,藉由現有 ReplicationMonitor 物件的 PublisherMonitors 屬性進行存取。
執行下列其中一或多個方法,針對屬於此「發行者」的所有發行集傳回複寫資訊。
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,則表示發行集屬性定義不正確,或者該發行集不存在。
從藉由現有 PublisherMonitor 物件的 PublicationMonitors 屬性進行存取的 PublicationMonitorCollection。
執行下列其中一或多個方法,傳回有關此發行集的詳細資訊。
EnumErrorRecords - 傳回 DataSet 物件,其中包含有關所指定錯誤的錯誤記錄。
EnumLogReaderAgent - 傳回 DataSet 物件,其中包含有關此發行集之「記錄讀取器代理程式」的詳細資訊。
EnumMonitorThresholds - 傳回 DataSet 物件,其中包含有關為此發行集所設的監視警告臨界值的詳細資訊。
EnumQueueReaderAgent - 傳回 DataSet 物件,其中包含有關此發行集所使用之「佇列讀取器代理程式」的詳細資訊。
EnumSnapshotAgent - 傳回 DataSet 物件,其中包含有關此發行集的「快照集代理程式」的詳細資訊。
EnumSubscriptions - 傳回 DataSet 物件,其中包含有關此發行集訂閱的詳細資訊。
EnumSubscriptions2 - 傳回 DataSet 物件,其中包含根據提供的 SubscriptionResultOption 而定的此發行集訂閱的詳細資訊。
EnumTracerTokenHistory - 傳回 DataSet 物件,其中包含所指定之追蹤 Token 的延遲資訊。
EnumTracerTokens - 傳回 DataSet 物件,其中包含有關插入至此發行集的所有追蹤 Token 的詳細資訊。
若要監視在訂閱者端等候套用的交易式命令
使用 ServerConnection 類別建立與「散發者」的連接。
以下列其中一種方法取得 PublicationMonitor 物件。
建立 PublicationMonitor 類別的執行個體。設定發行集的 DistributionDBName、PublisherName、PublicationDBName 和 Name 屬性,並將 ConnectionContext 屬性設定為在步驟 1 中建立的 ServerConnection。呼叫 LoadProperties 方法以取得物件的屬性。如果此方法傳回 false,則表示發行集屬性定義不正確,或者該發行集不存在。
從藉由現有 PublisherMonitor 物件的 PublicationMonitors 屬性進行存取的 PublicationMonitorCollection。
執行 TransPendingCommandInfo 方法,傳回 PendingCommandInfo 物件。
使用此 PendingCommandInfo 物件的屬性判斷暫止命令的估計數,以及完成傳遞這些命令所需的時間長度。
若要設定發行集的監視器警告臨界值
使用 ServerConnection 類別建立與「散發者」的連接。
以下列其中一種方法取得 PublicationMonitor 物件。
建立 PublicationMonitor 類別的執行個體。設定發行集的 DistributionDBName、PublisherName、PublicationDBName 和 Name 屬性,並將 ConnectionContext 屬性設定為在步驟 1 中建立的 ServerConnection。呼叫 LoadProperties 方法以取得物件的屬性。如果此方法傳回 false,則表示發行集屬性定義不正確,或者該發行集不存在。
從藉由現有 PublisherMonitor 物件的 PublicationMonitors 屬性進行存取的 PublicationMonitorCollection。
執行 EnumMonitorThresholds 方法。請注意在 MonitorThreshold 物件的傳回 ArrayList 中的目前臨界值設定。
執行 ChangeMonitorThreshold 方法。傳遞下列參數:
metricID - Int32 值,代表來自下列資料表的監視臨界值標準:
值
描述
1
expiration - 監視交易式發行集的訂閱是否即將到期。
2
latency - 監視交易式發行集的訂閱效能。
4
mergeexpiration - 監視合併式發行集的訂閱是否即將到期。
5
mergeslowrunduration - 監視透過低頻寬 (撥號) 連接進行合併同步處理的持續時間。
6
mergefastrunduration - 監視透過高頻寬 (LAN) 連接進行合併同步處理的持續時間。
7
mergefastrunspeed - 監視透過高頻寬 (LAN) 連接進行合併同步處理的同步處理速率。
8
mergeslowrunspeed - 監視透過低頻寬 (撥號) 連接進行合併同步處理的同步處理速率。
enable - Boolean 值,代表是否已針對發行集啟用標準。
thresholdValue - 設定臨界值的整數值。
shouldAlert - 代表此臨界值是否應產生警示的整數。