다음을 통해 공유


프로그래밍 방식으로 복제 모니터링

복제 모니터는 복제 토폴로지 모니터링을 허용하는 그래픽 도구입니다. 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 실행합니다. @session_id 대해 1단계의 Session_id 값을 지정합니다. 세션에 대한 자세한 모니터 정보가 표시됩니다.

  3. 관심 있는 각 세션에 대해 2단계를 반복합니다.

구독자에서 끌어오기 구독에 대한 병합 에이전트 세션을 모니터링하려면

  1. 구독 데이터베이스의 구독자에서 sp_replmonitorhelpmergesession 명령을 실행합니다. 지정된 구독의 경우 @publisher, @publication@publisher_db 게시 데이터베이스의 이름을 지정합니다. 이 구독에서는 마지막 5회 병합 에이전트 세션의 모니터링 정보를 반환합니다. 결과 집합에 관심 있는 세션의 Session_id 값을 확인합니다.

  2. 구독 데이터베이스의 구독자에서 sp_replmonitorhelpmergesessiondetail 실행합니다. @session_id 대해 1단계의 Session_id 값을 지정합니다. 세션에 대한 자세한 모니터링 정보가 표시됩니다.

  3. 관심 있는 각 세션에 대해 2단계를 반복합니다.

게시에 대한 모니터 임계값 메트릭을 보고 수정하려면

  1. 배포 데이터베이스의 배포자에서 sp_replmonitorhelppublicationthresholds 실행합니다. 이 배포자를 사용하는 모든 게시에 대해 설정된 모니터링 임계값을 반환합니다. 단일 게시자 또는 게시된 데이터베이스 또는 단일 게시에 속하는 게시에 대한 임계값을 모니터링하도록 결과 집합을 제한하려면 각각 @publisher, @publisher_db 또는 @publication 지정합니다. 변경해야 하는 임계값에 대한 Metric_id 값을 확인합니다. 자세한 내용은 Set Thresholds and Warnings in Replication Monitor를 참조하세요.

  2. 배포 데이터베이스의 배포자에서 sp_replmonitorchangepublicationthreshold 실행합니다. 필요에 따라 다음을 지정합니다.

    • @metric_id 대해 1단계에서 가져온 Metric_id 값입니다.

    • @value 모니터 임계값 메트릭의 새 값입니다.

    • 이 임계값에 도달할 때 경고가 기록될 @shouldalert 값은 1이고, 경고가 필요하지 않은 경우 값은 0입니다.

    • 모니터 임계값 메트릭을 사용하도록 설정하려면 @mode 값이 1이거나, 사용하지 않도록 설정하려면 2 값입니다.

RMO(복제 관리 개체)

구독자에서 병합 게시에 대한 구독을 모니터링하려면

  1. 클래스를 사용하여 구독자에 대한 연결을 만듭니다 ServerConnection .

  2. 클래스 MergeSubscriberMonitor의 인스턴스를 생성하고, Publisher, Publication, PublisherDB, SubscriberDB 속성을 구독에 대해 설정하고, ConnectionContext 속성을 1단계에서 생성한 ServerConnection로 설정합니다.

  3. 아래의 방법 중 하나를 호출하여 이 구독의 병합 에이전트 세션 정보를 반환하십시오.

    • GetSessionsSummary - 마지막 5개의 병합 에이전트 세션에 대한 정보가 포함된 개체 배열 MergeSessionSummary 을 반환합니다. 관심 있는 모든 세션의 SessionId 값을 확인합니다.

    • GetSessionsSummary - 지난 시간 동안 발생한 병합 에이전트 세션에 대한 정보가 있는 개체 배열 MergeSessionSummary시간 매개 변수로 반환합니다(마지막 5개 세션까지). 관심 있는 모든 세션의 SessionId 값을 확인합니다.

    • GetLastSessionSummary - 마지막 병합 에이전트 세션에 대한 정보가 포함된 개체를 반환 MergeSessionSummary 합니다. 이 세션의 SessionId 값을 확인합니다.

    • GetSessionsSummaryDataSet - 각 행에 하나씩 최대 5개의 병합 에이전트 세션에 대한 정보가 포함된 개체를 반환 DataSet 합니다. 관심 있는 세션에 대한 Session_id 열의 값을 확인합니다.

    • GetLastSessionSummaryDataRow - 마지막 병합 에이전트 세션에 대한 정보가 포함된 개체를 반환 DataRow 합니다. 이 세션의 Session_id 열 값을 확인합니다.

  4. (선택 사항) mss로 전달된 개체의 MergeSessionSummary 데이터를 새로 고치거나 drRefresh로 전달된 개체의 DataRow 데이터를 새로 고치도록 호출 RefreshSessionSummaryRefreshSessionSummary 합니다.

  5. 3단계에서 얻은 세션 ID를 사용하여 다음 방법 중 하나를 호출하여 특정 세션의 세부 정보에 대한 정보를 반환합니다.

배포자에서 모든 게시의 복제 특성을 모니터링합니다.

  1. 클래스를 사용하여 배포자에 대한 연결을 만듭니다 ServerConnection .

  2. ReplicationMonitor 클래스의 인스턴스를 만듭니다.

  3. ConnectionContext 속성을 1단계에서 만든 속성으로 ServerConnection 설정합니다.

  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 - 이 임계값이 경고를 생성해야 하는지 여부를 나타내는 정수입니다.