Procesador de entrega y programación

Reporting Services incluye el componente Procesador de entrega y programación, para permitir operaciones programadas y controlar las extensiones de entrega utilizadas para insertar informes en buzones de correo electrónico o en destinos de carpetas compartidas.

El Procesador de entrega y programación es un componente interno que el servidor de informes utiliza para procesar las suscripciones y la entrega de informes, o para actualizar una instantánea o establecer la fecha de expiración de un informe almacenado en caché. Si está configurando características de servidor o solucionando problemas de suscripción o entrega, puede utilizar la información de este tema para entender las fases del procesamiento programado y las dependencias de otros servicios y tecnologías. En este tema también se describen las opciones de configuración que puede utilizar para administrar la cola de eventos.

Funcionamiento del Procesador de entrega y programación

El Procesador de entrega y programación ofrece las siguientes funcionalidades:

  • Mantiene una cola de eventos y notificaciones en la base de datos del servidor de informes. En una implementación escalada, la cola se comparte en todos los servidores de informes de la implementación.

  • Llama al Procesador de informes para ejecutar informes, procesar suscripciones o borrar informes de la memoria caché. Todo el procesamiento de informes que se produce como consecuencia de un evento de programación se realiza como un proceso en segundo plano.

  • Llama a la extensión de entrega especificada en una suscripción para que el informe se pueda entregar.

Otros componentes y servicios que funcionan con el Procesador de entrega y programación controlan otros aspectos de la operación de programación y entrega. En concreto, el Procesador de entrega y programación se ejecuta en el servicio del servidor de informes y utiliza el Agente SQL Server como temporizador para generar eventos programados. En la descripción paso a paso siguiente se explica el funcionamiento de las operaciones programadas en una implementación de Reporting Services:

  1. Las operaciones programadas se definen cuando un usuario crea una programación. En la programación se definen la fecha y hora en que se desencadenará una suscripción para la entrega de informes, se actualizará una instantánea o expirará una memoria caché.

  2. El servidor de informes guarda la información de programación en su base de datos.

  3. El servidor de informes crea un trabajo correspondiente en el Agente SQL Server que contiene la información de programación facilitada. Los trabajos se crean gracias a un procedimiento almacenado, mediante la conexión abierta existente con la base de datos del servidor de informes.

  4. El Agente SQL Server ejecuta el trabajo en la fecha y hora especificadas en la programación. El trabajo crea un evento que se agrega a una cola que mantiene Reporting Services.

  5. El evento hace que se produzca un proceso de informe o suscripción. Los eventos se procesan cuando son detectados en la cola; el informe se procesa o entrega en consecuencia.

    Antes de que se procesen los eventos, el Procesador de entrega y programación realiza un paso de autenticación para comprobar que el propietario de la suscripción tiene permiso para ver el informe. Para obtener más información sobre las suscripciones, vea Procesar suscripciones.

Reporting Services mantiene una cola de eventos para todas las operaciones programadas. La sondea a intervalos regulares para detectar nuevos eventos. De forma predeterminada, la cola se recorre a intervalos de 10 segundos. Es posible cambiar el intervalo si se modifican los valores de configuración PollingInterval, IsNotificationService e IsEventService del archivo RSReportServer.config. Para obtener más información, vea Archivo de configuración RSReportServer.

Dependencias de servidor

El Procesador de entrega y programación requiere que se hayan iniciado el servicio del servidor de informes y el Agente SQL Server. La característica Procesador de entrega y programación debe habilitarse a través de la propiedad ScheduleEventsAndReportDeliveryEnabled de la faceta Configuración de área expuesta para Reporting Services en Administración basada en directiva. Tanto el Agente SQL Server como el servicio del servidor de informes deben estar en ejecución para que se puedan realizar las operaciones programadas.

Nota

Se puede utilizar la faceta Configuración de área expuesta para Reporting Services con el fin de detener las operaciones programadas de manera temporal o permanente. Aunque puede crear e implementar extensiones de entrega personalizadas, el Procesador de entrega y programación en sí mismo no es extensible. No se puede cambiar el modo en que administra eventos y notificaciones. Para obtener más información acerca de cómo desactivar características, vea Cómo activar o desactivar las características de Reporting Services.

Efectos de detener el Agente SQL Server

Para procesar informes programados, se utiliza de forma predeterminada el Agente SQL Server. Si se detiene el servicio, las nuevas solicitudes de procesamiento solo se pueden agregar a la cola mediante programación con el método FireEvent. Cuando se reinicia el servicio, se reanudan los trabajos que crean solicitudes de procesamiento de informes. El servidor de informes no trata de volver a crear trabajos de procesamiento de informes que pudieran haberse producido en el pasado, mientras el Agente SQL Server estaba sin conexión. Si se detiene el Agente SQL Server durante una semana, todas las operaciones programadas se pierden para esa semana.

Nota

La funcionalidad que proporciona el Agente SQL Server a Reporting Services se puede reemplazar con código personalizado que utilice el método FireEvent para agregar eventos de programación a la cola.

Efectos de detener el servicio del servidor de informes

Si se detiene el servicio del servidor de informes, el Agente SQL Server sigue agregando solicitudes de procesamiento de informes a la cola. La información de estado del Agente SQL Server indica que el trabajo concluyó correctamente. No obstante, puesto que se ha detenido el servicio del servidor de informes, en realidad no se produce el procesamiento de informes. Las solicitudes se siguen acumulando en la cola hasta que se reinicia el servicio del servidor de informes. Una vez reiniciado este servicio, todas las solicitudes de procesamiento de informes existentes en la cola se procesan por orden.