Implementar Reporting Services e Internet Information Services en paralelo

Puede instalar y ejecutar SQL Server 2008 R2 Reporting Services e Internet Information Services (IIS) en el mismo equipo. La versión de IIS que use determinará los problemas de interoperabilidad que debe tratar.

Versión de IIS

Problemas

Descripción

IIS 6.0 y 7.0

Las solicitudes destinadas a una aplicación las acepta una aplicación diferente.

HTTP.SYS exige reglas de prioridad para las reservas de direcciones URL. Puede que las solicitudes que se envían a aplicaciones con el mismo nombre de directorio virtual y que supervisan de manera conjunta el puerto 80, no alcancen el destino deseado si la reserva de direcciones URL es débil en relación con la reserva de direcciones URL de otra aplicación.

En determinadas condiciones, un extremo registrado que reemplaza otro extremo de dirección URL en el esquema de reserva de direcciones URL podría recibir solicitudes HTTP pensadas para la otra aplicación.

El uso de nombres de directorio virtual únicos para el servicio web del servidor de informes y el Administrador de informes ayuda a evitar este conflicto.

En este tema se proporciona información detallada acerca de este escenario.

IIS 5.1

Conflicto de puertos

De forma predeterminada, IIS 5.1 reserva el puerto 80 para su uso exclusivo. Si instala SQL Server 2008 R2 Reporting Services en Windows XP de 32 bits (SP2), el puerto predeterminado para las direcciones URL de Reporting Services será el puerto 8080:

http://<nombreDeServidor>:8080/reportserver

http://<nombreDeServidor>:8080/reports

En la plataforma de 64 bits, el puerto predeterminado para las direcciones URL de Reporting Services es el puerto 80. IIS 5.1 usa HTTP.SYS en la versión de 64 bits de Windows XP SP2, permitiendo el uso compartido del puerto 80 por parte de ambas aplicaciones.

Reglas de prioridad para las reservas de direcciones URL

Para poder resolver problemas de interoperabilidad entre IIS y Reporting Services, debe entender las reglas de prioridad de reserva de direcciones URL. Las reglas de prioridad se pueden generalizar en la instrucción siguiente: una reserva de direcciones URL que tiene valores definidos de forma más explícita se encuentra en la primera posición para recibir solicitudes que coinciden con la dirección URL. 

  • Una reserva de direcciones URL que especifica un directorio virtual es más explícita que una que omite un directorio virtual.

  • Una reserva de direcciones URL que especifica una dirección única (mediante una dirección IP, un nombre de dominio completo, un nombre de equipo de red o un nombre de host) es más explícita que un carácter comodín.

  • Una reserva de direcciones URL que especifica un carácter comodín fuerte es más explícita que un carácter comodín débil.

Los ejemplos siguientes muestran un intervalo de reservas de direcciones URL, ordenado de más a menos explícito:

Ejemplo

Solicitud

http://123.234.345.456:80/reports

Recibe todas las solicitudes que se envían a http://123.234.345.456/reports o http://<nombreDeEquipo>/reports si un servicio de nombre de dominio puede resolver la dirección IP a dicho nombre de host.

http://+:80/reports

Recibe las solicitudes enviadas a cualquier dirección IP o nombre de host válido para dicho equipo siempre que la dirección URL contenga el nombre de directorio virtual "reports".

http://123.234.345.456:80

Recibe cualquier solicitud que especifica http://123.234.345.456 o http://<nombreDeEquipo> si un servicio de nombre de dominio puede resolver la dirección IP en dicho nombre de host.

http://+:80

Recibe solicitudes que aún no se han recibido por otras aplicaciones, para cualquier extremo de aplicación asignado a Todas asignadas.

http://*:80

Recibe solicitudes que aún no se han recibido por otras aplicaciones, para cualquier extremo de aplicación asignado a Todas sin asignar.

Una indicación de que hay un conflicto en el puerto es que verá el siguiente mensaje de error: 'System.IO.FileLoadException: El proceso no puede tener acceso al archivo porque está siendo utilizado en otro proceso. (Excepción de HRESULT: 0x80070020).'.

Reservas de direcciones URL para IIS 6.0 y 7.0 y SQL Server 2008 Reporting Services

Dadas las reglas de prioridad descritas en la sección anterior, puede empezar a entender cómo las reservas de direcciones URL definidas para Reporting Services e IIS promueven la interoperabilidad. Reporting Services recibe las solicitudes que especifican explícitamente los nombres de directorio virtual para sus aplicaciones; IIS recibe todas las solicitudes restantes, que se pueden dirigir a continuación a las aplicaciones que se ejecutan dentro del modelo de proceso de IIS.

Aplicación

Reserva de direcciones URL

Descripción

Confirmación de solicitud

Servidor de informes

http://+:80/ReportServer

Carácter comodín fuerte en el puerto 80, con directorio virtual del servidor de informes.

Recibe todas las solicitudes del puerto 80 que especifican el directorio virtual del servidor de informes. El servicio web del servidor de informes recibe todas las solicitudes para http://<nombreDeEquipo>/reportserver.

Administrador de informes

http://+:80/Reports

Carácter comodín fuerte en el puerto 80, con directorio virtual Reports.

Recibe todas las solicitudes del puerto 80 que especifican el directorio virtual de informes. El Administrador de informes recibe todas las solicitudes para http://<nombreDeEquipo>/reports.

IIS

http://*:80/

Carácter comodín débil en el puerto 80.

Recibe las solicitudes restantes del puerto 80 que no recibe ninguna otra aplicación.

Implementaciones simultáneas de SQL Server 2008 y SQL Server 2005 Reporting Services en IIS 6.0 o 7.0

Los problemas de interoperabilidad entre IIS y Reporting Services se producen cuando los sitios web de IIS tienen nombres de directorio virtual idénticos a los usados por Reporting Services. Por ejemplo, supongamos que tiene la siguiente configuración:

  • Un sitio web en IIS asignado al puerto 80 y un directorio virtual denominado "Reports".

  • Una instancia del servidor de informes de SQL Server 2008 R2 instalada en la configuración predeterminada, donde la reserva de direcciones URL también especifica el puerto 80 y la aplicación Administrador de informes también usa "Reports" como nombre del directorio virtual.

Dada esta configuración, el Administrador de informes recibirá una solicitud que se envía a http://<nombreDeEquipo>:80/reports. La aplicación a la que se tiene acceso a través del directorio virtual Reports en IIS ya no recibirá solicitudes una vez instalada la instancia del servidor de informes de SQL Server 2008 R2.

Si ejecuta implementaciones simultáneas de versiones anteriores y más recientes de Reporting Services, es probable que encuentre el problema de enrutamiento que acabamos de describir. Esto se debe a que todas las versiones de Reporting Services usan "ReportServer" y "Reports" como nombres de directorio virtual para las aplicaciones del servidor de informes y el Administrador de informes, lo que aumenta la probabilidad de que tenga los directorios virtuales "reports" y "reportserver" en IIS.

Para asegurarse de que todas las aplicaciones reciben solicitudes, siga estas directrices:

  • Para las instalaciones de Reporting Services, use nombres de directorios virtuales que no haya usado previamente ningún sitio web de IIS en el mismo puerto que Reporting Services. Si se produce un conflicto, instale Reporting Services en el modo "solo archivos" (mediante la opción "Instalar, pero no configurar el servidor de informes" del Asistente para la instalación), de manera que pueda configurar los directorios virtuales una vez finalizada la instalación. Una indicación de que hay un conflicto en la configuración es que verá el siguiente mensaje de error: System.IO.FileLoadException: El proceso no puede tener acceso al archivo porque está siendo utilizado en otro proceso. (Excepción de HRESULT: 0x80070020).

  • Para las instalaciones que configure manualmente, adopte las convenciones de nomenclatura predeterminadas en las direcciones URL que configure. Si instala SQL Server 2008 R2 Reporting Services como una instancia con nombre, incluya el nombre de la instancia al crear un directorio virtual.

Interoperabilidad con IIS 5.1 en Windows XP SP2

Windows XP SP2 proporciona el componente HTTP.SYS que requiere Reporting Services. Sin embargo, aunque HTTP.SYS está disponible en el sistema operativo, IIS 5.1 no lo usa. En su lugar, IIS 5.1 acepta todas las solicitudes del puerto 80 o de cualquier puerto que esté configurado para su utilización. Dado que no hay ninguna reserva de direcciones URL para IIS 5.1 en HTTP.SYS, no hay ninguna administración central de la cola de solicitudes que permita a las aplicaciones web de Reporting Services recibir las solicitudes en el mismo puerto.

Por esta razón, la configuración predeterminada para un servidor de informes que se instala en Windows XP SP2 de 32 bits es usar el puerto 8080 para el servicio web del servidor de informes y el Administrador de informes. La tabla siguiente muestra las reservas de direcciones URL para el servicio web y el Administrador de informes:

  • http://+:8080/reportserver

  • http://+:8080/reports

El uso de un puerto no predeterminado en la reserva de direcciones URL para aplicaciones Reporting Services significa que no hay ningún conflicto de direcciones URL para escenarios simultáneos con versiones anteriores de Reporting Services.

Si tiene instaladas en el mismo equipo instancias del servidor del informe anteriores y más recientes, las direcciones URL predeterminadas serán http://<nombreDeServidor>/<reportserver> para el servidor de informes de Reporting Services 2005 al que se tiene acceso a través de IIS y http://<nombreDeServidor>:8080/<reportserver> para el servidor de informes de SQL Server 2008 R2 Reporting Services.