以程式設計方式監視複寫
適用於:SQL Server Azure SQL 受控執行個體
「複寫監視器」是一個允許您監視複寫拓撲之全面健全狀況的圖形化工具。 您可以使用 Transact-SQL 複寫預存程序或 Replication Management Objects (RMO),以程式設計的方式存取相同的監視資料。 這些物件可用來設計下列工作:
監視「發行者」、發行集和訂閱的狀態。
在一個或多個「訂閱者」端監視「合併代理程式」的工作階段。
監視在一個或多個「訂閱者」端等候套用的交易式命令。
定義臨界值標準,以決定發行集何時需要介入。
監視追蹤 Token 的狀態。
本主題內容:
Replication Management Objects (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。 針對 @session_id 指定步驟 1 的 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 值。 如需相關資訊,請參閱 Set Thresholds and Warnings in Replication Monitor。
在散發資料庫的「散發者」端,執行 sp_replmonitorchangepublicationthreshold。 視需要指定下列項目:
針對 @metric_id 指定在步驟 1 中取得的 Metric_id值。
針對 @value指定監視臨界值標準的新值。
針對 @shouldalert ,指定 1 的值以在達到此臨界值時記錄警示,或者如果不需要警示,則指定 0 的值。
針對 @mode ,指定 1 的值以啟用監視臨界值標準;或指定 2 的值加以停用。
Replication Management Objects (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 ,以重新整理以 MergeSessionSummary 所傳遞之 mss, 物件的資料,或呼叫 RefreshSessionSummary ,以重新整理以 DataRow 所傳遞之 drRefresh。
使用步驟 3 中取得的工作階段識別碼,呼叫下列其中一個方法來傳回有關特定工作階段詳細資料的資訊。
GetSessionDetails - 傳回 MergeSessionDetail ,傳回 SessionId。
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 物件的 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 - 傳回 DataSet 物件,其中包含有關此「散發者」端所有發行集訂閱的詳細資訊。
若要監視散發者端特定發行集的屬性
使用 ServerConnection 類別建立與散發者的連接。
以下列其中一種方法取得 PublicationMonitor 物件。
建立 PublicationMonitor 類別的執行個體。 設定發行集的 DistributionDBName、 PublisherName、 PublicationDBName和 Name 屬性,並將 ConnectionContext 屬性設定為在步驟 1 中建立的 ServerConnection 。 呼叫 LoadProperties 方法以取得物件的屬性。 如果此方法傳回 false,則表示發行集屬性定義不正確,或者該發行集不存在。
從藉由現有 PublicationMonitorCollection 物件的 PublicationMonitors 屬性進行存取的 PublisherMonitor 。
執行下列其中一或多個方法,傳回有關此發行集的詳細資訊。
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,則表示發行集屬性定義不正確,或者該發行集不存在。
從藉由現有 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 - 代表此臨界值是否應產生警示的整數。