2009-12-01 2 views
2

SQL Server 2005 복제를 설정 한 여러 원격 위치가 있습니다. 때로는 게시자는복제 게시자가 구독자 시스템에 연결하지 못하면 SQL Server에서 전자 메일을 전자 메일로 보낼 수 있습니다.

1) 네트워크 문제와 같은 여러 가지 이유로 인해 복제 가입자의

2) 부적절한 종료 비방, 실패

도메인 암호 3) 변화,

4) 변화

5) 구독자 시스템을 켜지 못했습니다.

관리자가 확인할 수 있도록 SQL 서버에서 관리자에게 전자 메일을 보낼 수있는 방법이 있습니까?

감사합니다. Chak.

+0

별도로 "sql", "server"및 "2005"대신 "sql-server-2005"태그를 사용하십시오. - 감사합니다! –

답변

1

일반적으로 이렇게 처리하는 방법은 복제 에이전트 시작/실행을 담당하는 SQL 에이전트 작업을 수정하는 것입니다 (복제 토폴로지에 따라 잠재적으로 다른 위치에 여러 가지가 있음) . 해당 단계가 완료되거나 실패 할 경우 실행되는 "에이전트 실행"단계 후에 적절한 에이전트 작업 (예 : 로그 판독기 에이전트, 배포 에이전트, 병합 에이전트, 대기열 에이전트 등)에 작업 단계를 추가하십시오 연속 일정을 사용하고 있는지 여부에 따라 다름).

예를 들어, 트랜잭션의 단방향 푸시 게시 설정이있는 경우 배포 에이전트가 배포자에서 실행됩니다. 배포자에 연결하고이 게시에 대한 배포 에이전트 실행을 담당하는 Sql 에이전트 작업을 찾으면 작업을 수정하고 "에이전트 실행"단계가 실패하거나 완료되면 특정 그룹에 전자 메일을 보내기위한 단계를 추가 할 수 있습니다. 연속 복제 일정을 사용하고 있다면 "에이전트 실행"단계가 완료되면 전자 메일에 단계를 추가하기 만하면됩니다 (어떤 이유로 든 에이전트가 중지되면 알림을 받고 싶음). 비 연속적인 일정을 사용하는 경우 "실행 에이전트"단계의 실패시에만 전자 메일 단계를 실행할 수 있습니다. 이 "이메일"단계를 구성하여 이메일을 보내고 조금만 일시 중지 한 다음 자동으로 에이전트를 다시 시작하십시오 ("성공하면 1 단계로 이동").

다음은 작업 단계는 내가 위에서 개요로 구성 배포 에이전트의 모양을 묘사 샷 :

distribution agent configured with notify, pause, restart step http://i45.tinypic.com/2zs4aw9.jpg

당신은 내가 일시 정지, 통지 "라는 단계를 추가 한 그 위의 그림에서 알 수는 다시 시도 "에이전트가 중단 될 때마다 실행됩니다 (성공 또는 실패 - 이는 연속 복제 일정을 사용하고 분배 에이전트가 whateve를 실행하지 않을 때마다 알기를 원하기 때문에 의도적입니다.) r 이유). 이 단계는 기본적으로 특정 그룹에 전자 메일을 보내고 1 ~ 2 분 정도 기다린 다음 에이전트를 다시 시작합니다. 로깅, 특정 시간 조각에서 특정 횟수 만 다시 시작하는 등 원하는 작업을 수행 할 수있는 코드를 추가 할 수 있습니다. 모든 수의 에이전트, 게시 등에서 쉽게 스크립팅하고 반복 할 수 있습니다. 모든 유형의 토폴로지에있는 복제 에이전트에는 이러한 유형의 구성이 포함됩니다. 즉, 환경에 배포하는 방법에 따라 릴리스 도구에 추가하거나 실행을 예약하는 것입니다.

1

복제에 대해서는 많이 알지 못하지만 sp_readerrorlog은 데이터베이스 인스턴스 내에서 DB 로그에 액세스 할 수있는 매우 유용한 저장 프로 시저입니다.필요할 경우 에이전트 작업의 SUCCESS/FAIL 분기가 아닌 특정 오류 메시지를 기반으로보다 적절하게 대응할 수 있습니다. 물론 저장된 프로 시저에서 직접 전자 메일을 보낼 수도 있습니다. 오류에 가장 잘 응답 할 수있는 사람 (예 : 주간/야간 근무자의 시간대)에 따라 수신자를 사용자 정의 할 수 있습니다.

잠재적 인 실패에 네트워크 연결이 끊어지기 때문에 작업이 실패하지 않고 성공하면 이메일을 보내는 것이 더 적절할까요? 이받은 편지함을 모니터링하고 예상되는 성공 메시지를받지 못하면 관리자에게 오류 알림을 시작하기 위해 마지막에 교환 규칙을 설정하는 것이 좋습니다. ... 인간은 일정한 자극과 부족함을 필터링하는 것을 매우 잘합니다. 성공 메시지를 쉽게 놓칠 수 있습니다. 반면에 Exchange는 항상 (보통) 경계합니다.

3

에이전트 문제를 탐지하는 한, 로그 판독기 및 배포자가 언제 중지되는지 알고 싶습니다. 또한 Chadhoc과 같은 지속적인 복제가 가능하지만 상담원이 중지되었는지 알리려면 알림을 사용하는 것이 더 쉽습니다.

USE [msdb] 
GO 
EXEC msdb.dbo.sp_add_alert 
    @name=N'Distribution agent stopped', 
    @message_id=0, 
    @severity=0, 
    @enabled=1, 
    @delay_between_responses=2160, 
    @include_event_description_in=1, 
    @category_name=N'[Uncategorized]', 
    @performance_condition=N'MSSQL$MYDATABASE:Replication Agents|Running|Distribution|=|0', 
    @job_id=N'00000000-0000-0000-0000-000000000000' 
GO 
EXEC msdb.dbo.sp_update_notification 
    @alert_name=N'Distribution agent stopped', 
    @operator_name=N'Amit', 
    @notification_method = 1 

유효성 검사/동기화 오류는 감지하기가 쉽지 않습니다. sp_publication_validation을 실행하고 "Validation Failed"에 대한 또 다른 경고를 설정하도록 야간 작업을 설정할 수 있습니다.

관련 문제