이 모니터는 게시에 대한 복제 로그 판독기 에이전트 서비스의 상태를 확인합니다.
복제 로그 판독기 에이전트는 트랜잭션 복제용으로 구성된 각 데이터베이스의 트랜잭션 로그를 모니터링하는 실행 파일입니다. 로그 판독기 에이전트는 복제가 표시된 트랜잭션을 트랜잭션 로그에서 배포 데이터베이스로 복사합니다.
로그 판독기는 아래 설명된 것과 같은 원인으로 인해 실패할 수 있습니다.
로그 판독기 에이전트는 게시자 데이터베이스 또는 배포 데이터베이스에 연결할 수 없습니다.
로그 판독기 에이전트는 게시자 데이터베이스에서 sp_replcmds/sp_replcounters를 실행할 수 없습니다.
로그 판독기 에이전트는 게시자 데이터베이스에서 sp_repldone을 실행할 수 없습니다.
쿼리 시간 초과 오류가 발생하여 로그 판독기 에이전트가 실패했습니다.
비대화형 데스크톱 힙에 대한 메모리 소모량입니다.
에이전트 실행 파일에 잘못된 매개 변수가 전달되었습니다.
이 문제는 다음을 통해 해결할 수 있습니다.:
게시자 로그인에 dbo 액세스 권한을 부여하고 있습니다.
쿼리 시간 제한 매개 변수 값을 늘리고 로그 판독기 에이전트가 차단되거나 리소스를 대기 중이지 않은지 확인합니다.
게시자 로그인 계정을 사용하여 게시자 데이터베이스에서 sp_replcmds를 수동으로 실행합니다.
sp_replflush를 실행하여 게시자 데이터베이스에서 복제 저장 프로시저를 실행 중인 다른 모든 클라이언트를 지웁니다.
올바른 매개 변수가 에이전트 실행 파일로 전달되었는지 확인합니다.
http://support.microsoft.com/kb/949296에 설명된 대로 데스크톱 힙을 늘립니다.
http://technet.microsoft.com/library/ms146878.aspx
이름 | 설명 | 기본값 |
사용 | 워크플로를 사용하거나 사용하지 않도록 설정 | 예 |
알림 생성 | 워크플로가 알림을 생성하는지 정의 | 예 |
간격(초) | 워크플로를 실행하는 반복 시간 간격(초)입니다. | 300 |
상태가 알려진 작업 표시 | 모니터 출력 및 경고 컨텍스트에 알 수 없는 상태의 작업을 포함합니다. 상태에 영향을 줍니다. | 아니요 |
시간 제한(초) | 시간 제한(초) | 300 |
동기화 시간 | 동기화 시간 |
|
Target | Microsoft.SQLServer.2012.Replication.Publication | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2012.Replication.MonitorType.ReplicationAgentState | ||
Remotable | True | ||
Accessibility | Internal | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.PublicationLogReaderAgentState" Accessibility="Internal" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Publication" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.ReplicationAgentState" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.PublicationLogReaderAgentState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SqlTimeout>300</SqlTimeout>
<ConnectionString>$Target/Host/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/Distributor$</ConnectionString>
<XPathName>Log reader$Target/Host/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/Distributor$$Target/Host/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/DistributorDatabaseName$$Target/Host/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/ConnectionString$$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublication']/PublicationName$</XPathName>
<ShowJobsWithUnknownState>false</ShowJobsWithUnknownState>
<EstimatedJobDuration>15</EstimatedJobDuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>