방법: 프로그래밍 방식으로 복제 모니터링(RMO 프로그래밍)
복제 모니터는 복제 토폴로지를 모니터링하는 데 사용할 수 있는 그래픽 도구입니다. RMO(복제 관리 개체)를 사용하여 프로그래밍 방식으로 동일한 모니터링 데이터에 액세스할 수 있습니다. RMO 클래스를 사용하면 다음 태스크를 프로그래밍할 수 있습니다.
구독자에서 마지막 다섯 번의 병합 에이전트 실행 결과 모니터링
게시자, 게시 및 구독의 상태 모니터링
하나 이상의 구독자에서 적용 대기 중인 트랜잭션 명령 모니터링
게시에 개입이 필요한 시기를 결정하는 임계값 메트릭 정의
추적 프로그램 토큰의 상태 모니터링. 자세한 내용은 방법: 트랜잭션 복제에 대한 대기 시간 측정 및 연결 유효성 검사(RMO 프로그래밍)를 참조하십시오.
구독자에서 병합 게시에 대한 구독을 모니터링하려면
ServerConnection 클래스를 사용하여 구독자 연결을 만듭니다.
MergeSubscriberMonitor 클래스의 인스턴스를 만들고, 구독에 대해 Publisher, Publication, PublisherDB, SubscriberDB 속성을 설정한 다음 ConnectionContext 속성을 1단계에서 만든 ServerConnection으로 설정합니다.
다음 메서드 중 하나를 호출하여 이 구독의 병합 에이전트 세션에 대한 정보가 반환되도록 합니다.
GetSessionsSummary()()()() - 마지막 다섯 개까지의 병합 에이전트 세션에 대한 정보가 포함된 MergeSessionSummary 개체의 배열을 반환합니다. 관심 세션의 SessionID()()()() 값을 확인합니다.
GetSessionsSummary(Int32) - hours 매개 변수로 전달한 시간 동안 발생한 병합 에이전트 세션(최대 마지막 다섯 개)에 대한 정보가 포함된 MergeSessionSummary 개체의 배열을 반환합니다. 관심 세션의 SessionID()()()() 값을 확인합니다.
GetLastSessionSummary - 마지막 병합 에이전트 세션에 대한 정보가 포함된 MergeSessionSummary 개체를 반환합니다. 이 세션의 SessionID()()()() 값을 확인합니다.
GetSessionsSummaryDataSet - 최대 마지막 다섯 개의 병합 에이전트 세션에 대한 정보가 각 행에 하나씩 포함된 DataSet 개체를 반환합니다. 관심 세션의 Session_id 열 값을 확인합니다.
GetLastSessionSummaryDataRow - 마지막 병합 에이전트 세션에 대한 정보가 포함된 DataRow 개체를 반환합니다. 이 세션의 Session_id 열 값을 확인합니다.
(옵션) RefreshSessionSummary(MergeSessionSummary%)를 호출하여 mss로 전달된 MergeSessionSummary 개체의 데이터를 새로 고치거나, RefreshSessionSummary(DataRow%)를 호출하여 drRefresh로 전달된 DataRow 개체의 데이터를 새로 고칩니다.
3단계에서 가져온 세션 ID를 사용하여 다음 메서드 중 하나를 호출합니다. 그러면 특정 세션에 대한 세부 정보가 반환됩니다.
GetSessionDetails - 지정된 sessionID에 대한 MergeSessionDetail 개체의 배열을 반환합니다.
GetSessionDetailsDataSet - 지정된 sessionID에 대한 정보가 포함된 DataSet 개체를 반환합니다.
배포자에서 모든 게시에 대한 복제 속성을 모니터링하려면
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를 반환하는 경우 게시자 이름이 올바르게 정의되지 않았거나 해당 게시가 없는 것입니다.
기존 ReplicationMonitor 개체의 PublisherMonitors 속성을 통해 액세스한 PublisherMonitorCollection에서 가져옵니다.
다음 메서드 중 하나 이상을 실행하여 이 배포자에 속해 있는 모든 게시에 대한 복제 정보가 반환되도록 합니다.
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 - 지정된 SubscriptionResultOption에 따라 이 게시에 대한 구독과 관련된 추가 정보가 들어 있는 DataSet 개체를 반환합니다.
EnumTracerTokenHistory - 지정된 추적 프로그램 토큰에 대한 대기 시간 정보가 들어 있는 DataSet 개체를 반환합니다.
EnumTracerTokens - 이 게시에 삽입된 모든 추적 프로그램 토큰에 대한 정보가 들어 있는 DataSet 개체를 반환합니다.
구독자에서 적용 대기 중인 트랜잭션 명령을 모니터링하려면
ServerConnection 클래스를 사용하여 배포자 연결을 만듭니다.
다음 방법 중 하나로 PublicationMonitor 개체를 가져옵니다.
PublicationMonitor 클래스의 인스턴스를 만듭니다. 게시에 대한 DistributionDBName, PublisherName, PublicationDBName 및 Name 속성을 설정하고 ConnectionContext 속성을 1단계에서 만든 ServerConnection으로 설정합니다. LoadProperties 메서드를 호출하여 개체의 속성을 가져옵니다. 이 메서드가 false를 반환하는 경우 게시 속성이 올바르게 정의되지 않았거나 해당 게시가 없는 것입니다.
기존 PublisherMonitor 개체의 PublicationMonitors 속성을 통해 액세스한 PublicationMonitorCollection에서 가져옵니다.
PendingCommandInfo 개체를 반환하는 TransPendingCommandInfo 메서드를 실행합니다.
이 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 - 이 임계값에서 경고를 생성할지 여부를 나타내는 정수입니다.