Gleichzeitiges Bereitstellen von Reporting Services und Internetinformationsdiensten
Sie können SQL Server 2008 R2 Reporting Services und die Internetinformationsdienste (IIS) auf demselben Computer installieren und ausführen. Je nach IIS-Version treten bestimmte Interoperabilitätsprobleme auf.
IIS-Version |
Probleme |
Beschreibung |
---|---|---|
IIS 6.0 und 7.0 |
Für eine bestimmte Anwendung vorgesehene Anforderungen werden von einer anderen Anwendung angenommen. HTTP.SYS erzwingt Rangfolgeregeln für URL-Reservierungen. Anforderungen, die an Anwendungen gesendet werden, die den gleichen virtuellen Verzeichnisnamen aufweisen und gemeinsam Port 80 überwachen, erreichen möglicherweise nicht das vorgesehene Ziel, wenn die URL-Reservierung im Vergleich zur URL-Reservierung einer anderen Anwendung schwach ist. |
Unter bestimmten Bedingungen empfängt ein registrierter Endpunkt, der einen anderen URL-Endpunkt im URL-Reservierungsschema außer Kraft setzt, HTTP-Anforderungen für die andere Anwendung. Durch die Verwendung eindeutiger Namen für die virtuellen Verzeichnisse des Report Server-Webdiensts und des Berichts-Managers kann dieser Konflikt vermieden werden. Ausführliche Informationen über dieses Szenario sind in diesem Thema enthalten. |
IIS 5.1 |
Portkonflikt |
Standardmäßig reserviert IIS 5.1 Port 80 für seine exklusive Verwendung. Wenn Sie SQL Server 2008 R2 Reporting Services unter Windows XP SP2 (32 Bit) installieren, lautet der Standardport für die Reporting Services-URLs 8080: http://<servername>:8080/reportserver http://<servername>:8080/reports Auf der 64-Bit-Plattform lautet der Standardport für die Reporting Services-URLs Port 80. IIS 5.1 verwendet HTTP.SYS in der 64-Bit-Version von Windows XP SP2, sodass Port 80 von beiden Anwendungen verwendet werden kann. |
Rangfolgeregeln für URL-Reservierungen
Um die Interoperabilitätsprobleme zwischen IIS und Reporting Services lösen zu können, müssen Sie zunächst die URL-Reservierungsrangfolgeregeln verstehen. Rangfolgeregeln können folgendermaßen beschrieben werden: Je expliziter eine URL-Reservierung definiert ist, umso eher erhält sie die Anforderungen für diese URL.
Eine URL-Reservierung, die ein virtuelles Verzeichnis angibt, ist expliziter als eine URL-Reservierung ohne virtuelles Verzeichnis.
Eine URL-Reservierung, die eine einzige Adresse angibt (mittels einer IP-Adresse, eines vollqualifizierten Domänennamens, eines Computernamens im Netzwerk oder eines Hostnamens) ist expliziter als ein Platzhalter.
Eine URL-Reservierung, die einen starken Platzhalter angibt, ist expliziter als eine URL-Reservierung mit einem schwachen Platzhalter.
In den folgenden Beispielen werden verschiedene URL-Reservierungen gezeigt. Als Erste steht die URL-Reservierung mit der höchsten Explizität, als Letzte die mit der geringsten Explizität:
Beispiel |
Anforderung |
---|---|
http://123.234.345.456:80/reports |
Empfängt alle Anforderungen, die an http://123.234.345.456/reports oder http://<computername>/reports gesendet wurden, wenn ein Domain Name Service die IP-Adresse in diesen Hostnamen auflösen kann. |
http://+:80/reports |
Empfängt alle Anforderungen, die an eine IP-Adresse oder einen Hostnamen gesendet werden, die bzw. der gültig für diesen Computer ist, sofern die URL den Namen des virtuellen Verzeichnisses "reports" enthält. |
http://123.234.345.456:80 |
Empfängt alle Anforderungen, die http://123.234.345.456 oder http://<computername> angeben, wenn ein Domain Name Service die IP-Adresse in diesen Hostnamen auflösen kann. |
http://+:80 |
Empfängt für alle Anwendungsendpunkte, die Alle zugewiesenen zugeordnet sind, Anforderungen, die nicht bereits von anderen Anwendungen empfangen wurden. |
http://*:80 |
Empfängt für alle Anwendungsendpunkte, die Alle nicht zugewiesenen zugeordnet sind, Anforderungen, die nicht bereits von anderen Anwendungen empfangen wurden. |
Ein Zeichen für einen Portkonflikt ist die folgende Fehlermeldung: 'System.IO.FileLoadException: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird. (Ausnahme von HRESULT: 0x80070020,'
URL-Reservierungen für IIS 6.0 und 7.0 und SQL Server 2008 Reporting Services
Anhand der im vorherigen Abschnitt beschriebenen Rangfolgeregeln wird deutlich, wie die für Reporting Services und IIS definierten URL-Reservierungen zur Interoperabilität beitragen. Reporting Services empfängt Anforderungen, die die Namen der virtuellen Verzeichnisse seiner Anwendungen explizit angeben; IIS empfängt alle verbleibenden Anforderungen, die dann an Anwendungen umgeleitet werden können, die innerhalb des IIS-Verarbeitungsmodells ausgeführt werden.
Anwendung |
URL-Reservierung |
Beschreibung |
Anforderungsempfang |
---|---|---|---|
Berichtsserver |
http://+:80/ReportServer |
Starker Platzhalter an Port 80, mit virtuellem Verzeichnis "ReportServer". |
Empfängt alle Anforderungen an Port 80, die das virtuelle Verzeichnis "ReportServer" angeben. Der Report Server-Webdienst empfängt alle Anforderungen an http://<computername>/reportserver. |
Berichts-Manager |
http://+:80/Reports |
Starker Platzhalter an Port 80, mit virtuellem Verzeichnis "Reports". |
Empfängt alle Anforderungen an Port 80, die das virtuelle Verzeichnis "reports" angeben. Berichts-Manager empfängt alle Anforderungen an http://<computername>/reports. |
IIS |
http://*:80/ |
Schwacher Platzhalter an Port 80. |
Empfängt an Port 80 alle Anforderungen, die nicht von einer anderen Anwendung empfangen wurden. |
Gleichzeitige Bereitstellungen von SQL Server 2008 und SQL Server 2005 Reporting Services auf IIS 6.0 oder 7.0
Interoperabilitätsprobleme zwischen IIS und Reporting Services treten auf, wenn IIS-Websites und Reporting Services identische Namen virtueller Verzeichnisse aufweisen. Gehen wir beispielsweise von folgender Konfiguration aus:
Eine Website in IIS, die Port 80 und einem virtuellen Verzeichnis mit dem Namen "Reports" zugewiesen ist.
Eine in der Standardkonfiguration installierte SQL Server 2008 R2-Berichtsserverinstanz, bei der die URL-Reservierung auch Port 80 angibt und der Berichts-Manager auch "Reports" als Namen des virtuellen Verzeichnisses verwendet.
Bei dieser Konfiguration wird eine an http://<computername>:80/reports gesendete Anforderung vom Berichts-Manager empfangen. Die Anwendung, auf die über das virtuelle Verzeichnis "Reports" in IIS zugegriffen wird, empfängt keine Anforderungen mehr nach der Installation der SQL Server 2008 R2-Berichtsserverinstanz.
Wenn Sie die Bereitstellungen älterer und neuerer Versionen von Reporting Services gleichzeitig ausführen, tritt unter Umständen das gerade beschriebene Routingproblem auf. Dies liegt daran, dass alle Reporting Services-Versionen "ReportServer" und "Reports" als Namen der virtuellen Verzeichnisse für den Berichtsserver und den Berichts-Manager verwenden und damit die Wahrscheinlichkeit erhöht wird, dass in IIS die virtuellen Verzeichnisse "reports" und "reportserver" vorhanden sind.
Um sicherzustellen, dass alle Anwendungen Anforderungen empfangen, sollten Sie diesen Richtlinien folgen:
In Reporting Services-Installationen sollten Sie Namen für virtuelle Verzeichnisse angeben, die nicht bereits von einer IIS-Website an dem Port verwendet werden, den auch Reporting Services verwendet. Wenn ein Konflikt auftritt, müssen Sie Reporting Services im Dateimodus installieren (über die Option Server installieren, jedoch nicht konfigurieren im Installations-Assistenten), sodass Sie die virtuellen Verzeichnisse nach dem Setup konfigurieren können. Ein Zeichen für einen Konflikt in Ihrer Konfiguration ist die folgende Fehlermeldung: 'System.IO.FileLoadException: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird. (Ausnahme von HRESULT: 0x80070020).
Übernehmen Sie für Installationen, die Sie manuell konfigurieren, die Standardnamenskonventionen in den URLs. Wenn Sie SQL Server 2008 R2 Reporting Services als benannte Instanz installieren, müssen Sie den Instanzennamen beim Erstellen eines virtuellen Verzeichnisses angeben.
Interoperabilität mit IIS 5.1 unter Windows XP SP2
Windows XP SP2 stellt die HTTP.SYS-Komponente bereit, die von Reporting Services gefordert wird. Obwohl jedoch HTTP.SYS im Betriebssystem verfügbar ist, verwendet IIS 5.1 es nicht. IIS 5.1 akzeptiert dagegen alle Anforderungen an Port 80 bzw. an dem entsprechend konfigurierten Port. Da keine URL-Reservierung für IIS 5.1 in HTTP.SYS besteht, wird keine zentrale Verwaltung der Anforderungswarteschlange durchgeführt, die Reporting Services-Webanwendungen das Empfangen von Anforderungen am gleichen Port ermöglicht.
Die Standardkonfiguration für einen Berichtsserver, der unter Windows XP SP2 (32 Bit) installiert ist, ist daher die Verwendung von Port 8080 für den Report Server-Webdienst und den Berichts-Manager. In der folgenden Tabelle werden die URL-Reservierungen für den Webdienst und den Berichts-Manager angezeigt:
http://+:8080/reportserver
http://+:8080/reports
Das Verwenden eines nicht standardmäßigen Ports in der URL-Reservierung für Reporting Services-Anwendungen vermeidet URL-Konflikte in Szenarien, in denen gleichzeitig ältere Reporting Services-Versionen vorhanden sind.
Wenn auf einem Computer ältere und neue Berichtsserverinstanzen installiert sind, lauten die Standard-URLs http://<servername>/<reportserver> für den Reporting Services 2005-Berichtsserver, auf den über IIS zugegriffen wird, und http://<servername>:8080/<reportserver> für den SQL Server 2008 R2 Reporting Services-Berichtsserver.