Implantando o Reporting Services e o Serviços de Informações da Internet lado a lado

Você pode instalar e executar o SQL Server 2008 R2 Reporting Services e o IIS (Serviços de Informações da Internet) no mesmo computador. A versão do IIS utilizada determina os problemas de interoperabilidade a serem resolvidos.

Versão do IIS

Problemas

Descrição

IIS 6.0 e 7.0

As solicitações dirigidas a um aplicativo são aceitas por um aplicativo diferente.

O HTTP.SYS impõe as regras de precedência a reservas de URL. As solicitações enviadas a aplicativos com o mesmo nome de diretório virtual e que, ao mesmo tempo, monitoram a porta 80 podem não alcançar o destino pretendido se a reserva de URL for fraca, em relação à reserva de URL de outro aplicativo.

Em determinadas condições, um ponto de extremidade registrado que substitui outro ponto de extremidade de URL no esquema de reserva de URL pode receber solicitações HTTP destinadas a outro aplicativo.

Se você usar nomes do diretório virtual exclusivos para o serviço Web Servidor de Relatórios e o Gerenciador de Relatórios, esse conflito será evitado.

Informações detalhadas sobre esse cenário são fornecidas neste tópico.

IIS 5.1

Conflito de porta

Por padrão, o IIS 5.1 reserva a porta 80 para seu uso exclusivo. Se você instalar o SQL Server 2008 R2 Reporting Services no Windows XP (SP2) de 32 bits, a porta padrão para as URLs do Reporting Services será a porta 8080:

http://<nome_servidor>:8080/reportserver

http://<nome_servidor>:8080/reportserver

Na plataforma de 64 bits, a porta padrão para as URLs do Reporting Services é a porta 80. O IIS 5.1 usa HTTP.SYS na versão de 64 bits do Windows XP SP2, permitindo que a porta 80 seja compartilhada por ambos os aplicativos.

Regras de precedência para reservas de URL

Antes de corrigir problemas de interoperabilidade entre o IIS e o Reporting Services, você deve compreender as regras de precedência de reserva de URL. As regras de precedência podem ser generalizadas na seguinte instrução: uma reserva de URL tem valores definidos mais explicitamente é a primeira a receber solicitações que correspondam à URL. 

  • Uma reserva de URL que especifica um diretório virtual é mais explícita que uma que omite um diretório virtual.

  • Uma reserva de URL que especifica um único endereço (por meio de um endereço IP, um nome de domínio totalmente qualificado, um nome de computador de rede ou um nome do host) é mais explícita que um curinga.

  • Uma reserva de URL que especifica um curinga forte é mais explícita que um curinga fraco.

Os seguintes exemplos mostram um intervalo de reservas de URL, ordenado do mais explícito ao menos explícito:

Exemplo

Solicitação

http://123.234.345.456:80/reports

Receberá todas as solicitações enviadas a http://123.234.345.456/reports ou HYPERLINK "http://<computername>/reports" http://<computername>/reports se um serviço de nome de domínio puder resolver o endereço IP para o nome do host.

http://+:80/reports

Recebe todas as solicitações enviadas a qualquer endereço IP ou nome do host válido para esse computador desde que a URL contenha o nome do diretório virtual “reports”.

http://123.234.345.456:80

Receberá qualquer solicitação que especifique http://123.234.345.456 ou HYPERLINK "http://<computername>" http://<computername> se um serviço de nome de domínio puder resolver o endereço IP do nome do host.

http://+:80

Recebe solicitações que ainda não foram recebidas por outros aplicativos, para todos os pontos de extremidade do aplicativo mapeado como Todos Atribuídos.

http://*:80

Recebe solicitações que ainda não foram recebidas por outros aplicativos, para todos os pontos de extremidade do aplicativo mapeado como Todos Não Atribuídos.

Uma indicação de um conflito de porta é que você verá a seguinte mensagem de erro: 'System.IO.FileLoadException: O processo não pode acessar o arquivo porque está sendo usado por outro processo. (Exceção de HRESULT: 0x80070020).'

Reservas de URL para IIS 6.0 e 7.0 e Reporting Services do SQL Server 2008

Dadas as regras de precedência na seção anterior, você pode começar a compreender como as reservas de URL definidas para o Reporting Services e o ISS promovem a interoperabilidade. O Reporting Services recebe solicitações que especificam explicitamente os nomes de diretório virtuais para seus aplicativos; o IIS recebe todas as solicitações restantes, que podem ser direcionadas a aplicativos executados no modelo de processo do IIS.

Aplicativo

Reserva de URL

Descrição

Recebimento de solicitação

Servidor de relatório

http://+:80/ReportServer

Curinga forte na porta 80, com diretório virtual de servidor de relatório.

Recebe todas as solicitações na porta 80 que especificam o diretório virtual de servidor de relatório. O serviço Web Servidor de Relatórios recebe todas as solicitações para http://<computername>/reportserver.

Gerenciador de Relatórios

http://+:80/Reports

Curinga forte na porta 80, com o diretório virtual Reports.

Recebe todas as solicitações na porta 80 que especificam o diretório virtual de relatórios. O Gerenciador de Relatórios recebe todas as solicitações para http://<computername>/reports.

IIS

http://*:80/

Curinga fraco na porta 80.

Recebe todas as solicitações restantes na porta 80 não recebidas por outro aplicativo.

Implantações lado a lado do Reporting Services do SQL Server 2008 e do SQL Server 2005 no IIS 6.0 ou 7.0

Os problemas de interoperabilidade entre o ISS e o Reporting Services ocorrem quando sites do IIS têm nomes de diretório virtual idênticos aos usados pelo Reporting Services. Por exemplo, suponha que você tenha a seguinte configuração:

  • Um site no IIS atribuído à porta 80 e um diretório virtual chamado "Reports".

  • Uma instância do servidor de relatório do SQL Server 2008 R2 instalada na configuração padrão, onde a reserva de URL também especifica a porta 80 e o aplicativo também usa "Reports" como nome do diretório virtual.

Dada essa configuração, uma solicitação enviada a http://<computername>:80/reports será recebida pelo Gerenciador de Relatórios. O aplicativo acessado por meio do diretório virtual Reports no IIS não receberá mais solicitações depois que a instância do servidor de relatório SQL Server 2008 R2 for instalada.

Se você estiver executando implantações lado a lado de versões mais antigas e mais recentes do Reporting Services, é provável que encontre o problema de roteamento descrito. Isso porque todas as versões do Reporting Services usam “ReportServer” e “Reports” como nomes de diretório virtual para os aplicativos de servidor de relatório e do Gerenciador de Relatórios, aumentando a probabilidade de haver um diretório virtual "reports" e "reportserver" no IIS.

Para garantir que todos os aplicativos recebam solicitações, siga estas diretrizes:

  • Para instalações do Reporting Services, use nomes de diretório virtual ainda não utilizados por um site do IIS na mesma porta que o Reporting Services. Se houver conflito, instale o Reporting Services no modo “somente arquivos” (usando a instalação, mas não configurando a opção do servidor no Assistente de Instalação), para que você possa configurar os diretórios virtuais depois que a instalação for concluída. Uma indicação de que a sua configuração possui um conflito de porta é que você verá a seguinte mensagem de erro: System.IO.FileLoadException: O processo não pode acessar o arquivo porque está sendo usado por outro processo. (Exceção de HRESULT: 0x80070020).

  • Para instalações configuradas manualmente, adote as convenções de nomenclatura padrão nas URLs configuradas. Se você instalar o SQL Server 2008 R2 Reporting Services como uma instância nomeada, inclua o nome da instância ao criar um diretório virtual.

Interoperabilidade com IIS 5.1 no Windows XP SP2

O Windows XP SP2 fornece o componente HTTP.SYS requerido por Reporting Services. Entretanto, embora HTTP.SYS esteja disponível no sistema operacional, o IIS 5.1 não o usa. Em vez disso, o IIS 5.1 aceita todas as solicitações na porta 80 ou em qualquer porta configurada para uso. Como não há reserva de URL para o IIS 5.1 no HTTP.SYS, não há gerenciamento central da fila de solicitação que permite que aplicativos da Web do Reporting Services recebam solicitações na mesma porta.

Por esse motivo, a configuração padrão de um servidor de relatório instalado no Windows XP SP2 de 32 bits é usar a porta 8080 para o serviço Web Servidor de Relatórios e o Gerenciador de Relatórios. A seguinte tabela mostra as reservas de URL para o serviço Web e o Gerenciador de Relatórios:

  • http://+:8080/reportserver

  • http://+:8080/reports

Usando uma porta não padrão na reserva de URL para aplicativos do Reporting Services significa que não há conflito de URL para cenários lado a lado com versões antigas de Reporting Services.

Se você tiver instâncias do servidor de relatório mais antigas e mais novas no mesmo computador, as URLs padrão serão http://<nome_servidor>/<servidor_relatório> para o servidor de relatório do Reporting Services 2005, acessado por meio do IIS, e http://<nome_servidor>:8080/<servidor_relatório> para o servidor de relatório do SQL Server 2008 R2 Reporting Services.