일정 예약 및 배달 프로세서

Reporting Services에는 예약된 작업을 지원하고 전자 메일 받은 편지함이나 공유 폴더 대상으로 보고서를 밀어넣는 데 사용되는 배달 확장 프로그램을 구동하기 위한 일정 예약 및 배달 프로세서 구성 요소가 포함되어 있습니다.

일정 예약 및 배달 프로세서는 구독 및 보고서 배달을 처리하거나 스냅숏을 새로 고치거나 캐시된 보고서의 만료 기간을 설정하기 위해 보고서 서버에서 사용하는 내부 구성 요소입니다. 서버 기능을 구성하고 있거나 구독 또는 배달 문제를 해결하고 있는 경우 이 항목에 포함된 정보를 활용하면 예약된 처리의 단계 및 다른 서비스와 기술에 대한 종속성을 이해할 수 있습니다. 이 항목은 또한 이벤트 큐를 관리하는 데 사용할 수 있는 구성 설정도 소개합니다.

일정 예약 및 배달 프로세스 작동 방식

일정 예약 및 배달 프로세서는 다음 기능을 제공합니다.

  • 보고서 서버 데이터베이스의 이벤트 및 알림 큐를 유지 관리합니다. 확장 배포에서는 배포의 모든 보고서 서버에서 큐가 공유됩니다.

  • 보고서 프로세서를 호출하여 보고서를 실행하거나 구독을 처리하거나 캐시된 보고서를 지웁니다. 일정 이벤트의 결과로 발생하는 모든 보고서 처리는 백그라운드 프로세스로 수행됩니다.

  • 보고서를 배달할 수 있도록 구독에서 지정되어 있는 배달 확장 프로그램을 호출합니다.

일정 예약 및 배달 작업의 다른 측면은 일정 예약 및 배달 프로세서와 함께 작동하는 다른 구성 요소 및 서비스에 의해 처리됩니다. 특히 일정 예약 및 배달 프로세서는 보고서 서버 서비스에서 실행되며 SQL Server 에이전트를 타이머로 사용하여 예약된 이벤트를 생성합니다. 다음 단계는 Reporting Services 배포에서 예약된 작업이 작동하는 방식을 설명합니다.

  1. 예약된 작업은 사용자가 일정을 만들 때 정의됩니다. 일정에는 보고서 배달을 위한 구독 트리거, 스냅숏 새로 고침 또는 캐시 만료에 사용되는 날짜 및 시간이 정의되어 있습니다.

  2. 보고서 서버는 보고서 서버 데이터베이스에 일정 정보를 저장합니다.

  3. 보고서 서버가 SQL Server 에이전트에서 제공된 일정 정보가 포함된 해당 작업을 만듭니다. 작업은 보고서 서버 데이터베이스에 대해 열린 기존 연결을 사용하여 저장 프로시저를 통해 생성됩니다.

  4. SQL Server 에이전트는 일정에 지정된 날짜 및 시간에 작업을 실행합니다. 작업이 만드는 이벤트는 Reporting Services가 유지 관리하는 큐에 추가됩니다.

  5. 이러한 이벤트로 인해 보고서 또는 구독 처리가 발생합니다. 이벤트는 큐에서 감지될 때 처리되며 보고서는 이에 따라 처리 또는 배달됩니다.

    이벤트가 처리되기 전에 일정 예약 및 배달 프로세서는 인증 단계를 수행하여 보고서를 볼 수 있는 권한이 구독 소유자에게 있는지 확인합니다. 구독에 대한 자세한 내용은 구독 처리를 참조하십시오.

Reporting Services는 모든 예약된 작업에 대해 이벤트 큐를 관리합니다. 또한 새 이벤트를 확인하기 위해 정기적으로 큐를 폴링합니다. 기본적으로 큐는 10초 간격으로 검색됩니다. RSReportServer.config 파일에서 PollingInterval, IsNotificationService 및 IsEventService 구성 설정을 수정하여 간격을 변경할 수 있습니다. 자세한 내용은 RSReportServer 구성 파일을 참조하십시오.

서버 종속성

일정 예약 및 배달 프로세서를 사용하려면 보고서 서버 서비스와 SQL Server 에이전트를 시작해야 합니다. 일정 예약 및 배달 처리 기능은 정책 기반 관리에 있는 Reporting Services에 대한 노출 영역 구성 패싯의 ScheduleEventsAndReportDeliveryEnabled 속성을 통해 설정해야 합니다. 예약된 작업이 수행되려면 SQL Server 에이전트와 보고서 서버 서비스가 모두 실행 중이어야 합니다.

[!참고]

Reporting Services에 대한 노출 영역 구성 패싯을 사용하여 일시적 또는 영구적으로 예약된 작업을 중지할 수 있습니다. 사용자 지정 배달 확장 프로그램을 만들어 배포할 수는 있지만 일정 예약 및 배달 프로세서만 단독으로 확장할 수는 없습니다. 따라서 이벤트 및 알림이 관리되는 방식을 변경할 수 없습니다. 기능 해제에 대한 자세한 내용은 방법: Reporting Services 설정 또는 해제을 참조하십시오.

SQL Server 에이전트를 중지할 때의 결과

예약된 보고서 처리는 기본적으로 SQL Server 에이전트를 사용합니다. 이 서비스를 중지하면 FireEvent 메서드를 통해 프로그래밍 방식으로 큐에 처리 요청을 추가할 때까지 큐에 새로운 처리 요청이 추가되지 않습니다. 서비스를 다시 시작하면 보고서 처리 요청을 만드는 작업이 다시 시작됩니다. SQL Server 에이전트가 오프라인 상태일 때 보고서 서버는 과거에 발생했을 수 있는 보고서 처리 작업을 다시 만들려고 하지 않습니다. 따라서 1주일 동안 SQL Server 에이전트를 중지하면 해당 주간에 예약된 모든 작업이 손실됩니다.

[!참고]

SQL Server 에이전트가 Reporting Services에 제공하는 기능은 FireEvent 메서드를 사용하여 큐에 일정 이벤트를 추가하는 사용자 지정 코드로 대체될 수 있습니다.

보고서 서버 서비스를 중지할 때의 결과

보고서 서버 서비스가 중지되더라도 SQL Server 에이전트는 보고서 처리 요청을 큐에 계속 추가합니다. SQL Server 에이전트의 상태 정보는 작업이 성공적으로 수행되었음을 나타냅니다. 그러나 보고서 서버 서비스가 중지되었으므로 실제로 보고서 처리는 발생하지 않습니다. 요청은 보고서 서버 서비스를 다시 시작할 때까지 큐에 계속 누적됩니다. 보고서 서버 서비스를 다시 시작하면 큐에 있는 모든 보고서 처리 요청이 순서대로 처리됩니다.