Déploiement côte à côte de Reporting Services et des services IIS (Internet Information Services)

Vous pouvez installer et exécuter SQL Server 2008 R2 Reporting Services et les services IIS (Internet Information Services) sur le même ordinateur. La version des services IIS (Internet Information Services) que vous utilisez détermine les problèmes d'interopérabilité que vous devez traiter.

Version des services IIS (Internet Information Services)

Problèmes

Description

IIS 6.0 et 7.0

Les requêtes prévues pour une application sont acceptées par une autre application.

HTTP.SYS applique des règles de priorité pour les réservations d'URL. Les requêtes envoyées aux applications qui ont le même nom de répertoire virtuel et qui surveillent conjointement le port 80 risquent de ne pas atteindre la cible prévue si la réservation d'URL est faible par rapport à la réservation d'URL d'une autre application.

Dans certaines conditions, un point de terminaison inscrit qui remplace un autre point de terminaison d'URL dans le schéma de réservation d'URL peut recevoir des requêtes HTTP destinées à l'autre application.

L'utilisation de noms de répertoires virtuels uniques pour le service Web Report Server et le Gestionnaire de rapports vous aide à éviter ce conflit.

Des informations détaillées sur ce scénario sont fournies dans cette rubrique.

IIS 5.1

Conflit de ports

Par défaut, IIS 5.1 réserve le port 80 pour son utilisation exclusive. Si vous installez SQL Server 2008 R2 Reporting Services sur Windows XP (SP2) 32 bits, le port par défaut des URL Reporting Services sera le port 8080 :

http://<nom_serveur>:8080/reportserver

http://<nom_serveur>:8080/reports

Sur la plateforme 64 bits, le port par défaut des URL Reporting Services est le port 80. IIS 5.1 utilise HTTP.SYS dans la version 64 bits de Windows XP SP2, ce qui permet le partage du port 80 par les deux applications.

Règles de priorité pour les réservations d'URL

Avant de pouvoir traiter les problèmes d'interopérabilité entre les services IIS (Internet Information Services) et Reporting Services, vous devez comprendre le fonctionnement des règles de priorité pour la réservation d'URL. Les règles de priorité peuvent être généralisées à l'aide de la formule suivante : la réservation d'URL dont la définition des valeurs est la plus explicite est la première à recevoir les requêtes qui correspondent à l'URL. 

  • Une réservation d'URL qui spécifie un répertoire virtuel est plus explicite qu'une réservation d'URL qui omet un répertoire virtuel.

  • Une réservation d'URL qui spécifie une adresse unique (via une adresse IP, un nom de domaine complet, un nom d'ordinateur réseau ou un nom d'hôte) est plus explicite qu'un caractère générique.

  • Une réservation d'URL qui spécifie un caractère générique fort est plus explicite qu'un caractère générique faible.

Les exemples suivants illustrent une plage de réservations d'URL, de la plus explicite à la moins explicite :

Exemple

Requête

http://123.234.345.456:80/reports

Reçoit toutes les requêtes envoyées à http://123.234.345.456/reports ou http://<nom_ordinateur>/reports si un service de nom de domaine peut convertir l'adresse IP vers ce nom d'hôte.

http://+:80/reports

Reçoit toutes les requêtes envoyées à une adresse IP ou un nom d'hôte valide pour cet ordinateur, tant que l'URL contient le nom de répertoire virtuel « reports ».

http://123.234.345.456:80

Reçoit les requêtes qui spécifient http://123.234.345.456 ou http://<nom_ordinateur> si un service de nom de domaine peut convertir l'adresse IP vers ce nom d'hôte.

http://+:80

Reçoit les requêtes qui ne sont pas déjà reçues par d'autres applications, pour tous les points de terminaison d'application mappés à Assigné.

http://*:80

Reçoit les requêtes qui ne sont pas déjà reçues par d'autres applications, pour les points de terminaison d'application mappés à Non assigné.

Le message d'erreur suivant indique un conflit de ports : « System.IO.FileLoadException : Le processus ne peut pas accéder au fichier, car il est utilisé par un autre processus. (Exception de HRESULT : 0x80070020). »

Réservations d'URL pour IIS 6.0 et 7.0, et SQL Server 2008 Reporting Services

Grâce aux règles de priorité décrites dans la section précédente, vous pouvez comprendre comment les réservations d'URL définies pour Reporting Services et les services IIS (Internet Information Services) favorisent l'interopérabilité. Reporting Services reçoit des requêtes qui spécifient explicitement les noms de répertoires virtuels de ses applications ; les services IIS (Internet Information Services) reçoivent toutes les requêtes restantes, lesquelles peuvent être adressées ensuite aux applications qui s'exécutent dans le cadre du modèle de processus IIS.

Application

Réservation d'URL

Description

Réception de requête

Report Server

http://+:80/ReportServer

Caractère générique fort sur le port 80, avec le répertoire virtuel du serveur de rapports.

Reçoit toutes les requêtes sur le port 80 qui spécifient le répertoire virtuel du serveur de rapports. Le service Web Report Server reçoit toutes les requêtes vers http://<nom_ordinateur>/reportserver.

Gestionnaire de rapports

http://+:80/Reports

Caractère générique fort sur le port 80, avec le répertoire virtuel Reports.

Reçoit toutes les requêtes sur le port 80 qui spécifient le répertoire virtuel reports. Le Gestionnaire de rapports reçoit toutes les requêtes vers http://<nom_ordinateur>/reports.

IIS

http://*:80/

Caractère générique faible sur le port 80.

Reçoit toutes les requêtes restantes sur le port 80, qui ne sont pas reçues par une autre application.

Déploiements côte à côte de SQL Server 2008 et de SQL Server 2005 Reporting Services sur IIS 6.0 ou 7.0

Des problèmes d'interopérabilité entre les services IIS (Internet Information Services) et Reporting Services se produisent lorsque les sites Web IIS ont des noms de répertoires virtuels identiques à ceux utilisés par Reporting Services. Prenons l'exemple de la configuration suivante :

  • Site Web IIS assigné au port 80 et répertoire virtuel nommé « Reports ».

  • Instance du serveur de rapports SQL Server 2008 R2 installée dans la configuration par défaut, où la réservation d'URL spécifie également le port 80 et où l'application du Gestionnaire de rapports utilise également « Reports » comme nom de répertoire virtuel.

Avec cette configuration, toute requête envoyée à http://<nom_ordinateur>: 80/reports sera reçue par le Gestionnaire de rapports. L'application accessible via le répertoire virtuel Reports dans IIS ne reçoit plus de requêtes une fois que l'instance du serveur de rapports SQL Server 2008 R2 est installée.

Si vous exécutez des déploiements côte à côte de versions plus anciennes et plus récentes de Reporting Services, vous risquez de rencontrer le problème de routage qui vient d'être décrit. En effet, toutes les versions de Reporting Services utilisent « ReportServer » et « Reports » comme noms de répertoires virtuels pour le serveur de rapports et les applications du Gestionnaire de rapports, ce qui augmente le risque d'avoir des répertoires virtuels « reports » et « reportserver » dans IIS.

Pour vous assurer que toutes les applications reçoivent des requêtes, suivez ces instructions :

  • Pour les installations Reporting Services, choisissez des noms de répertoires virtuels qui ne sont pas déjà utilisés par un site Web IIS sur le même port que Reporting Services. En cas de conflit, installez Reporting Services en mode « fichiers uniquement » (via le programme d'installation, mais ne configurez pas l'option serveur dans l'Assistant Installation) afin de pouvoir configurer les répertoires virtuels, une fois l'installation terminée. Le message d'erreur suivant indique un conflit au niveau de votre configuration : « System.IO.FileLoadException : Le processus ne peut pas accéder au fichier, car il est utilisé par un autre processus. (Exception de HRESULT : 0x80070020). »

  • Pour les installations que vous configurez manuellement, adoptez les conventions d'affectation des noms par défaut dans les URL de configuration. Si vous installez SQL Server 2008 R2 Reporting Services en tant qu'instance nommée, incluez le nom de l'instance lors de la création d'un répertoire virtuel.

Interopérabilité avec IIS 5.1 sur Windows XP SP2

Windows XP SP2 fournit le composant HTTP.SYS requis par Reporting Services. Toutefois, bien que HTTP.SYS soit disponible sur le système d'exploitation, IIS 5.1 ne l'utilise pas. À la place, IIS 5.1 accepte toutes les requêtes sur le port 80 ou sur n'importe quel port configuré pour être utilisé. Dans la mesure où il n'y a aucune réservation d'URL pour IIS 5.1 dans HTTP.SYS, il n'y a pas de gestion centralisée de la file d'attente des requêtes qui permet aux applications Web Reporting Services de recevoir des requêtes sur le même port.

Pour cette raison, la configuration par défaut d'un serveur de rapports installé sur Windows XP SP2 32 bits consiste à utiliser le port 8080 pour le service Web Report Server et le Gestionnaire de rapports. Le tableau suivant décrit les réservations d'URL pour le service Web et le Gestionnaire de rapports :

  • http://+:8080/reportserver

  • http://+:8080/reports

L'utilisation d'un port non défini par défaut lors de la réservation d'URL des applications Reporting Services signifie qu'il n'y a aucun conflit d'URL pour les scénarios de déploiement côte à côte avec les versions antérieures de Reporting Services.

Si des instances plus anciennes et plus récentes du serveur de rapports sont installées sur le même ordinateur, les URL par défaut sont http://<nom_serveur>/<reportserver> pour le serveur de rapports Reporting Services 2005 accessible via les services IIS (Internet Information Services), et http://<nom_serveur>:8080/<reportserver> pour le serveur de rapports SQL Server 2008 R2 Reporting Services.