복제 에이전트 이벤트에 대한 경고 사용Use Alerts for Replication Agent Events

SQL Server Management StudioSQL Server Management StudioMicrosoftMicrosoft SQL ServerSQL Server 에이전트에서는 경고를 사용하여 복제 에이전트 이벤트 등의 이벤트를 모니터링하는 방법을 제공합니다. and MicrosoftMicrosoft SQL ServerSQL Server Agent provide a way to monitor events, such as replication agent events, using alerts. SQL ServerSQL Server 에이전트는 경고와 관련된 이벤트에 대한 Windows 응용 프로그램 로그를 모니터링합니다. Agent monitors the Windows application log for events that are associated with alerts. 이런 이벤트가 발생하면 SQL ServerSQL Server 에이전트는 사용자가 정의한 태스크를 실행하거나 지정된 운영자에게 전자 메일 또는 호출기 메시지를 보내어 자동으로 응답합니다.If such an event occurs, SQL ServerSQL Server Agent responds automatically, by executing a task that you have defined and/or sending e-mail or a pager message to a specified operator. SQL ServerSQL Server 에는 태스크를 실행하거나 운영자에게 알리도록 구성할 수 있는 복제 에이전트에 대한 미리 정의된 경고 집합이 포함되어 있습니다. includes a set of predefined alerts for replication agents that you can configure to execute a task and/or notify an operator. 실행할 태스크를 정의하는 방법은 이 항목의 "경고에 대한 응답 자동화" 섹션을 참조하십시오.For more information about defining a task to execute, see the section "Automating a Response to an Alert" in this topic.

컴퓨터가 배포자로 구성될 때는 다음과 같은 경고가 설치됩니다.The following alerts are installed when a computer is configured as a Distributor:

메시지 IDMessage ID 미리 정의된 경고Predefined alert 경고가 발생되는 조건Condition causing the alert to fire msdb..sysreplicationalerts에 추가 정보 입력Enters additional information in msdb..sysreplicationalerts
1415014150 복제: 에이전트 성공Replication: agent success 에이전트가 성공적으로 종료됩니다.Agent shuts down successfully. Yes
1415114151 복제: 에이전트 실패Replication: agent failure 오류로 인해 에이전트가 종료됩니다.Agent shuts down with an error. Yes
1415214152 복제: 에이전트 다시 시도Replication: agent retry 불필요한 작업을 다시 시도한 후 에이전트가 종료합니다. 에이전트에는 사용할 수 없는 서버, 교착 상태, 연결 실패, 제한 시간 실패 등이 발생합니다.Agent shuts down after unsuccessfully retrying an operation (agent encounters an error such as server not available, deadlock, connection failure, or time-out failure). Yes
1415714157 복제: 만료된 구독 삭제Replication: expired subscription dropped 만료된 구독이 삭제되었습니다.Expired subscription was dropped. 아니요No
2057220572 복제: 유효성 검사 실패 후에 구독이 다시 초기화되었습니다.Replication: Subscription reinitialized after validation failure '데이터 유효성 검사 실패 시 구독 다시 초기화' 응답 작업이 구독을 성공적으로 다시 초기화합니다.Response job 'Reinitialize subscriptions on data validation failure' reinitializes a subscription successfully. 아니요No
2057420574 복제: 구독자가 데이터 유효성 검사에 실패했습니다.Replication: Subscriber has failed data validation 배포 또는 병합 에이전트가 데이터 유효성 검사에 실패합니다.Distribution or Merge Agent fails data validation. Yes
2057520575 복제: 구독자가 데이터 유효성 검사를 통과했습니다.Replication: Subscriber has passed data validation 배포 또는 병합 에이전트가 데이터 유효성 검사를 통과합니다.Distribution or Merge Agent passes data validation. Yes
2057820578 복제: 에이전트 사용자 지정 종료Replication: agent custom shutdown
2281522815 피어 투 피어 충돌 감지 경고Peer-to-peer conflict detection alert 피어 투 피어 노드에서 변경 내용을 적용하려고 할 때 배포 에이전트에서 충돌이 감지되었습니다.Distribution Agent detected a conflict when it tries to apply a change at a peer-to-peer node. Yes

복제 모니터는 이러한 경고 외에도 상태 및 성능과 관련된 일련의 경고를 제공합니다.In addition to these alerts, Replication Monitor provides a set of warnings and alerts related to status and performance. 자세한 내용은 Set Thresholds and Warnings in Replication Monitor를 참조하세요.For more information, see Set Thresholds and Warnings in Replication Monitor. SQL ServerSQL Server 경고 인프라를 사용하여 다른 복제 이벤트에 대한 경고도 정의할 수 있습니다.You can also define alerts for other replication events using the SQL ServerSQL Server alerts infrastructure. 자세한 내용은 사용자 정의 이벤트 만들기를 참조하세요.For more information, see Create a User-Defined Event.

미리 정의된 복제 경고를 구성하려면To configure predefined replication alerts

응용 프로그램 로그 직접 보기Viewing the Application Log Directly

MicrosoftMicrosoft Windows 이벤트 뷰어를 사용하여 Windows 응용 프로그램 로그를 볼 수 있습니다.To view the Windows application log, use the MicrosoftMicrosoft Windows Event Viewer. 응용 프로그램 로그에는 SQL ServerSQL Server 오류 메시지는 물론, 해당 컴퓨터에서 이루어지는 다른 여러 동작에 대한 메시지도 포함됩니다.The application log contains SQL ServerSQL Server error messages as well as messages for many other activities on the computer. SQL ServerSQL Server 오류 로그와 달리 새 응용 프로그램 로그는 SQL ServerSQL Server 를 시작할 때마다 생성되지 않고 각 SQL ServerSQL Server 세션이 새 이벤트를 기존 응용 프로그램 로그에 기록하지만 로그된 이벤트를 유지할 기간을 지정할 수 있습니다.Unlike the SQL ServerSQL Server error log, a new application log is not created each time you start SQL ServerSQL Server (each SQL ServerSQL Server session writes new events to an existing application log); however, you can specify how long logged events will be retained. Windows 응용 프로그램 로그를 보고 특정 이벤트에 대한 로그를 필터링할 수 있습니다.When you view the Windows application log, you can filter the log for specific events. 자세한 내용은 Windows 설명서를 참조하세요.For more information, see the Windows documentation.

경고에 대한 응답 자동화Automating a Response to an Alert

복제 시 데이터 유효성 검사에 실패한 구독에 대한 응답 작업을 제공하며 경고에 대한 자동 응답을 추가로 만드는 프레임워크 또한 제공합니다.Replication provides a response job for subscriptions that fail data validation, and also provides a framework for creating additional automated responses to alerts. 응답 작업은 데이터 유효성 검사 실패 시 구독 다시 초기화 로 제목이 지정되고 SQL ServerSQL Server에이전트 작업 SQL Server Management StudioSQL Server Management Studio폴더에 저장됩니다.The response job is titled Reinitialize subscriptions on data validation failure and is stored in the SQL ServerSQL Server Agent Jobs folder in SQL Server Management StudioSQL Server Management Studio. 이 응답 작업을 사용하도록 설정하는 방법은 미리 정의된 복제 경고 구성(SQL Server Management Studio)을 참조하세요.For information about enabling this response job, see Configure Predefined Replication Alerts (SQL Server Management Studio). 트랜잭션 게시의 아티클이 유효성 검사에 실패하면 응답 작업은 실패한 아티클만 다시 초기화합니다.If articles in a transactional publication fail validation, the response job reinitializes only those articles that failed. 병합 게시의 아티클이 유효성 검사에 실패하면 응답 작업은 게시의 모든 아티클을 다시 초기화합니다.If articles in a merge publication fail validation, the response job reinitializes all articles in the publication.

응답 자동화를 위한 프레임워크Framework for Automating Responses

일반적으로 경고가 발생하면 경고가 발생한 원인과 적절한 조치를 이해하는 데 도움이 되는 유일한 정보는 경고 메시지에 포함되어 있습니다.Usually, when an alert occurs, the only information you have to help you understand what caused the alert and the appropriate action to take is contained in the alert message itself. 이 정보를 구문 분석하면 오류가 발생하고 시간이 많이 걸릴 수 있습니다.Parsing this information can be error-prone and time-consuming. 복제는 sysreplicationalerts 시스템 테이블의 경고에 대한 추가 정보를 제공하여 응답을 쉽게 자동화할 수 있게 해줍니다. 제공된 정보는 사용자 지정된 프로그램에서 쉽게 사용할 수 있도록 정보를 이미 구문 분석된 형태로 제공합니다.Replication makes automating responses easier by providing additional information about the alert in the sysreplicationalerts system table; the information provided is already parsed in a form easily used by customized programs.

예를 들어 A 구독자의 Sales.SalesOrderHeader 테이블에 있는 데이터가 유효성 검사에 실패하면 SQL ServerSQL Server 에서 사용자에게 해당 오류를 알리는 메시지 20574를 발생시킬 수 있습니다.For example, if the data in the Sales.SalesOrderHeader table at Subscriber A fails validation, SQL ServerSQL Server can trigger message 20574, notifying you of that failure. 나타날 수 있는 메시지는 다음과 같습니다. "게시 'MyPublication'의 아티클 'SalesOrderHeader'에 대한 구독자 'A'의 구독이 데이터 유효성 검사에 실패했습니다."The message you receive will be: "Subscriber 'A', subscription to article 'SalesOrderHeader' in publication 'MyPublication' failed data validation."

메시지를 기반으로 응답을 만들 때는 메시지에서 구독자 이름, 아티클 이름, 게시 이름 및 오류 등을 수동으로 구문 분석해야 합니다.If you create a response based on the message, you must manually parse the Subscriber name, article name, publication name, and error from the message. 그러나 배포 에이전트와 병합 에이전트가 동일한 정보를 에이전트 유형, 경고 시간, 게시 데이터베이스, 구독자 데이터베이스, 게시 유형과 같은 자세한 정보와 함께 sysreplicationalerts 에 기록하므로, 응답 작업은 관련 정보를 테이블에서 직접 쿼리할 수 있습니다.However, because the Distribution Agent and Merge Agent write that same information to sysreplicationalerts (along with details such as the type of agent, time of the alert, publication database, Subscriber database, and type of publication) the response job can directly query the relevant information from the table. 경고의 특정 인스턴스에 정확한 행이 관련될 수는 없더라도 테이블에는 서비스된 항목을 추적할 때 사용할 수 있는 status 열이 있습니다.Although the exact row cannot be associated with a specific instance of the alert, the table has a status column, which can be used to keep track of serviced entries. 이 테이블의 항목들은 기록 보존 기간 동안 유지 관리됩니다.The entries in this table are maintained for the history retention period.

예를 들어 경고 메시지 20574를 서비스하는 응답 작업을 Transact-SQLTransact-SQL 로 작성하려는 경우에는 다음과 같은 논리를 사용할 수 있습니다.For example, if you were to create a response job in Transact-SQLTransact-SQL that services alert message 20574, you might use the following logic:

declare @publisher sysname, @publisher_db sysname, @publication sysname, @publication_type int, @article sysname, @subscriber sysname, @subscriber_db sysname, @alert_id int  
declare hc cursor local for select publisher, publisher_db, publication, publication_type, article, subscriber,   
  subscriber_db, alert_id from   
  msdb..sysreplicationalerts where  
  alert_error_code = 20574 and status = 0  
  for read only  
open hc  
fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id  
while (@@fetch_status <> -1)  
begin  
/* Do custom work  */  
/* Update status to 1, which means the alert has been serviced. This prevents subsequent runs of this job from doing this again */  
update msdb..sysreplicationalerts set status = 1 where alert_id = @alert_id  
 fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id  
end  
close hc  
deallocate hc  

관련 항목:See Also

복제 에이전트 관리 Replication Agent Administration
Best Practices for Replication Administration Best Practices for Replication Administration
모니터링(복제)Monitoring (Replication)