Report Server Mandantenfähigkeit: Unabhängige mehrfache Installation

Inhalt

Einleitung

Der Report Server lässt sich mit der mitgelieferten Installations-Routine selbst nur auf einer Maschine installieren. Sollen aber für unterschiedliche Szenarien wie bspw. für Entwicklungszwecke, Qualitätssicherung oder Produktivsystem unterschieden werden, wären dafür bereits drei Installationen auf drei unterschiedlichen Maschinen notwendig. Natürlich ist das heute einfach mit Hilfe von virtualisierten Kapazitäten umsetzbar. Aber auch ein virtualisiertes Netzwerk mit mehreren Maschinen verlangt nach Lizenzen für das Betriebssystem, etwaige SQL Server Instanzen etc. Aber auch der Einsatz für unterschiedliche Kunden, damit diese sich technisch nicht in die Quere kommen, würde pro Kunde eine eigenständige Maschine voraussetzen.

Damit solche unabhängigen Szenarien mit dem Report Server nun aber auf ein und derselben Maschine umgesetzt werden können, wurde im Report Server die technische Grundlage für eine sogenannte Mandantenfähigkeit geschaffen. Um dabei ein maximales Maß an Isolierung untereinander gewährleisten zu können, sind beim hier beschriebenen Ansatz sowohl die Datenbank für die Verwaltung des Report Servers selbst wie auch der Zugriff auf die jeweilige Website des Report Servers vollständig voneinander getrennt.

Voraussetzungen und Ausgangslage

Damit es dem Report Server ermöglicht werden kann, auf ein und derselben Maschine mehrfach ausgeführt werden zu können, waren technische Anpassungen notwendig, so dass hierzu mind. die Version 26.004 zum Einsatz kommen muss. Da eine Mehrfachinstallation nicht vorgesehen ist, wird daher als Grundlage eine bereits existierende Installation des Report Servers vorausgesetzt, die vollständig eingerichtet und konfiguriert ist. Bitte stellen Sie dabei auch sicher, dass bei der Report Server Installation, die als Vorlage für weitere Mandanten verwendet wird, zuvor ein externer Aufruf von einer anderen Maschine/Client durchgeführt wurde, um die Einrichtung des Task Services für die geplante Berichte vollständig abzuschließen. Es wird empfohlen vorab eine vollständige Systemsicherung durchzuführen.

Einen zusätzlichen Mandanten erstellen: Notwendige Schritte

Welche Schritte notwendig sind, um zusätzliche unabhängige Mandanten einer bestehenden Report Server Installation zu erstellen, wird im Folgenden beschrieben. Stellen Sie bitte dazu sicher, dass Sie auf dem betreffenden System über Administratorenberechtigungen verfügen und auch Zugriff auf das Datenbanksystem des Report Servers haben. Im Falle des Microsoft SQL Servers bspw. über das Microsoft SQL Server Management Studio oder für PostgreSQL über pgAdmin.

Wichtige Verzeichnisse und Dateien

Damit später die Mandanten unabhängig voneinander ausgeführt werden können und individuelle Einstellungen wie bspw. die zugrundeliegende Datenbank vorgenommen werden können, ist es erforderlich die bestehende Verzeichnisstruktur zu kopieren. Hierzu zählt zum einen das Installationsverzeichnis und zum anderen das sogenannte Cache-Verzeichnis.

Installationsverzeichnis

Bei einer Standardinstallation des Report Servers ist dieses Verzeichnis meist unter C:\Program Files\combit\combit Report Server\ zu finden und enthält sämtliche Dateien, um den Report Server ausführen zu können. Kopieren Sie nun das gesamte Verzeichnis samt aller Unterverzeichnisse unter einem individuellen Namen wie bspw. C:\Program Files\combit\combit Report Server QA\. Hierzu sind unter Umständen spezielle Administratorenberechtigungen notwendig.

Cache-Verzeichnis

Dieses Verzeichnis verwendet der Report Server, um temporäre Dateien, gecachte Berichte etc. zu verwalten und wird im Rahmen der Standardinstallation unter C:\ProgramData\combit\combit Report Server Cache angelegt. Sollte das Verzeichnis auf Anhieb nicht ausfindig gemacht werden können, so findet sich die Information auch in der Datei privateSettings.config im WebUI-Verzeichnis des Installationsverzeichnisses:

<setting key="CacheDir">C:\ProgramData\combit\combit Report Server Cache</setting>

Kopieren Sie nun das gesamte Verzeichnis samt aller Unterverzeichnisse unter einem individuellen Namen wie bspw. C:\ProgramData\combit\combit Report Server Cache QA\. Hierzu sind unter Umständen spezielle Administratorenberechtigungen notwendig.

IIS-Konfiguration und -Berechtigungen

Starten Sie den Internetinformationsdienste (IIS)-Manager, da dort nun der sogenannte Anwendungspool (AppPool) und die zugehörigen Berechtigungen sowie die Anwendung/Web-Site für den neuen Mandanten definiert werden müssen.

Anwendungspool/AppPool

Eine Kopieren-Funktion steht hierzu im IIS-Manager leider nicht zur Verfügung, so dass ein neuer AppPool manuell angelegt werden muss. Vergeben Sie einen aussagekräftigen Namen für den neuen AppPool, sodass dieser auch einfach mit dem zugehörigen Mandanten in Verbindung gebracht werden kann, bspw. combitReportServerQA.

Wichtig: Für die Einstellung .NET CLR-Version bitte unbedingt die Option Kein verwalteter Code verwenden und den Pipelinemodus auf Integriert stellen.

Neue Anwendung/Web-Site erstellen

Erstellen Sie nun eine neue Anwendung über das Rechtsklick-Kontextmenü über den Punkt Anwendung hinzufügen im Bereich Sites/Default Web-Site und definieren Sie die folgenden Grundeinstellungen dafür:

Alias: combitReportServerQA
Anwendungspool: combitReportServerQA
Physischer Pfad: C:\Program Files\combit\combit Report Server QA\WebUI

Berechtigungen

Damit nun der neue Report Server Mandant combitReportServerQA seinen Dienst verrichten kann, müssen nun noch spezielle Berechtigungen auf diverse Pfade definiert werden. Die Besonderheit dabei ist, dass als Berechtigung kein Windows-Benutzer eingetragen wird, sondern der eben neu erstelle AppPool combitReportServerQA. Die folgenden Schritte müssen daher einmal für das neue WebUI-Installationsverzeichnis (C:\Program Files\combit\combit Report Server QA\WebUI) und das neue Cache-Verzeichnis (C:\ProgramData\combit\combit Report Server Cache QA) sowie das Verzeichnis für den Task Service (C:\Program Files\combit\combit Report Server QA\TaskService) durchgeführt werden.

Bearbeiten Sie die entsprechenden Verzeichnisberechtigungen über den Windows-Explorer im Tab Sicherheit. Fügen Sie einen neuen Benutzer hinzu, indem Sie den folgenden Namen eintragen und Name überprüfen klicken: IIS Apppool\combitReportServerQA

Es wird dann automatisch im Dialog auf den Namen combitReportServerQA gewechselt. Gewähren Sie nun diesem Benutzer Vollzugriff auf das jeweils ausgewählte Verzeichnis samt Unterverzeichnissen.

Geplante Berichte (1): Task Service erstellen und vorbereiten

Damit geplante Berichte im jeweiligen Mandanten unabhängig voneinander ausgeführt werden können, sind entsprechende Systemanpassungen notwendig.

Windows Dienst/Service erstellen

Erstellen Sie mit einer Windows Eingabeaufforderung - die mit Administratorenberechtigungen ausgeführt werden muss! - einen neuen Dienst für den neuen Task Service des neuen Report Server Mandanten combitReportServerQA. Dazu muss folgendes Kommando ausgeführt werden:
sc.exe create "<NAME>" start=delayed-auto binPath="<PATH>"

Wobei hier NAME frei gewählt werden kann; jedoch unter Windows ein eindeutiger Name sein muss. Für den neuen Mandanten wählen wir den Namen combit Report Server QA Task Service.

PATH muss auf die Anwendung für den Task Service des neuen Mandanten in dessen Installationsverzeichnis zeigen:
C:\Program Files\combit\combit Report Server QA\TaskService\combit.ReportServer.TaskServiceWorker.exe.

Das Kommando für die Eingabeaufforderung lautet wie folgt:
sc.exe create "combit Report Server QA Task Service" start=delayed-auto binPath="C:\Program Files\combit\combit Report Server QA\TaskService\combit.ReportServer.TaskServiceWorker.exe"

Bei erfolgreicher Verarbeitung des Kommandos wird das mit einem [SC] CreateService ERFOLG bestätigt.

Der Dienst selbst sollte noch nicht gestartet werden, da die finalen Einstellungen zu diesem Zeitpunkt noch nicht feststehen. Dies geschieht in einem späteren Schritt.

Datenbank

Der Report Server verwendet für die eigene Verwaltung und Einstellungen eine eigene Datenbank, die wahlweise unter Microsoft SQL oder PostgreSQL genutzt werden kann. Hier werden die Berichtsvorlagen, Datenquellen-Konfigurationen, Benutzerverwaltung, allgemeine Einstellungen etc. gespeichert. Um diese Verwaltungsdatenbank des Report Servers zu erstellen, gibt es zwei Varianten, die abhängig von den gestellten Anforderungen ist:

  • Damit nun die bereits bestehende Datenstruktur für den zusätzlichen Mandanten zur Verfügung steht und die technischen Voraussetzungen erfüllt, sollte eine vollständige Kopie im Rahmen einer Datenbank-Sicherung durchgeführt werden. Basierend auf einer Microsoft SQL Datenbank und dem Microsoft SQL Management Studio wären das die folgenden Schritte. Abweichungen bei den einzelnen Punkten für unterschiedliche Versionen des Microsoft SQL Servers sowie des Microsoft SQL Management Studios sind nicht auszuschließen. Folgen Sie hierzu den Schritten in Vorhandene Datenbank als Daten-Ausgangslage verwenden.

  • Soll eine vollständig leere Verwaltungsdatenbank für den neuen Mandanten erstellt werden, kann der integrierte Einrichtungsassistent des Report Servers verwendet werden. Folgen Sie den Anweisungen in Neue/leere Datenbank als Daten-Ausgangslage erstellen lassen.

Vorhandene Datenbank als Daten-Ausgangslage verwenden

Die folgende Vorgehensweise beschreibt die notwendigen Schritte mit dem SQL Server Management Studio.

Backup von vorhandener Datenbank erstellen

Sollten Sie keine eigenständige Dateisicherung der Datenbank vornehmen wollen, können Sie diesen Punkt auch überspringen, um im späteren Verlauf eine direkte Wiederherstellung der Datenbank ohne zwischenzeitliche Dateisicherung durchzuführen. Suchen Sie sich die bestehende Report Server Datenbank mit dem Namen combitReportServer heraus und öffnen Sie dafür den Sicherungsassistenten. Dieser kann meist über das Kontextmenü Tasks > Sichern erreicht werden. Stellen Sie unbedingt sicher, dass als Sicherungstyp immer Vollständig ausgewählt ist und geben Sie einen entsprechenden Dateipfad- und namen an.

Neue Datenbank mit neuem Namen anlegen

Nun muss eine neue Datenbank erstellt werden, wofür auch das Kontextmenü zum Einsatz kommt. Wählen Sie dafür unter Datenbanken entsprechend den Punkt Neue Datenbank…, um den Assistenten für das Anlegen einer neuen Datenbank zu starten. Geben Sie nun einen entsprechenden neuen Datenbanknamen an wie bspw. combitReportServerQA. In der Regel können alle weiteren Einstellungen belassen werden. Zusätzlich kann hierbei aber noch ein Abgleich der Einstellungen zwischen der vorhandenen ausgehenden Datenbank combitReportServer und der neuen Datenbank combitReportServerQA durchgeführt werden.

Backup in neue Datenbank wiederherstellen

Abschließend muss nun noch die vorherige Sicherung/Kopie auf die neu angelegte Datenbank combitReportServerQA eingespielt werden. Öffnen Sie dazu den Wiederherstellungsassistenten mit Hilfe des Kontextmenüs Tasks > Wiederherstellen > Datenbank. Wählen Sie als Quelle die vorhandene ausgehende Datenbank combitReportServer aus und stellen Sie sicher, dass der Ziel-Datenbankname weiterhin combitReportServerQA ist. Als Quelle kann auch eine vorherige vollständige Dateisicherung der ausgehenden combit Report Server Datenbank angegeben werden. Wichtig ist nun, dass bei den Optionen für die Wiederherstellung WITH REPLACE (Vorhandene Datenbank überschreiben) aktiviert ist.

Datenbank-Anpassung für den Task Service (geplante Berichte)

In der neu erstellten Datenbank combitReportServerQA muss in der Tabelle CmbtSettings noch der Wert für den Namen TaskHelper.EventName dahingehend aktualisiert werden, dass eine andere bzw. neue GUID zum Einsatz kommt. Nur so können im späteren Verlauf und der Ausführung der unterschiedlichen Mandanten die geplanten Berichte zielsicher und unabhängig ausgeführt werden. Der Aufbau des Werts muss dabei wie folgt aussehen: Global\{CMBTRS:<GUID>}

Ein Beispiel könnte daher sein:
Global\{CMBTRS:CCF8473D-A860-432C-8C50-AF252FF40965}

privateSettings.config anpassen

Dies ist die zentrale Steuerungsdatei für die Report Server Anwendung, enthält Informationen zur verwendeten Datenbank und weitere wichtige Informationen und befindet sich im WebUI-Unterverzeichnis. Diese muss nun entsprechend für die angelegte Kopie C:\Program Files\combit\combit Report Server QA\WebUI\privateSettings.config angepasst werden, damit die neue Datenbank, Verzeichnisse etc. verwendet werden. Öffnen Sie dazu die Datei mit einem Text-Editor und beachten Sie bitte, dass Sie zum Abspeichern der Änderungen in der Datei Administratorenberechtigungen benötigen.


<setting key="CacheDir">C:\ProgramData\combit\combit Report Server Cache QA</setting>

<setting key="CoreDbConnection">Data Source=<MYSQLSERVERINSTANCENAME>;User ID=cmbtreportserver_user;Password=<MYPASSWORD>;Initial Catalog=combitReportServerQA</setting>

<setting key="InstanceIdentifier">combitReportServerQA</setting>

<setting key="CoreDbProvider">combit.ReportServer.DataLayer.SqlClientDatabase</setting>

Hinweis für die Einrichtung unter PostgreSQL

Beim Einsatz von PostgreSQL müssen die beiden Werte für CoreDbConnection und CoreDbProvider folgendes Schema haben:

<setting key="CoreDbConnection">Server=<MYSERVER>;Port=<MYPORT>;Database=combitReportServerQA;User Id=cmbtreportserver_user;Password=<MYPASSWORD>;</setting>

<setting key="CoreDbProvider">combit.ReportServer.DataLayer.PostgreSQLDatabase</setting>

Neue/leere Datenbank als Daten-Ausgangslage erstellen lassen

Soll keine vorhandene Report Server Datenbank mit deren Berichten, Datenquellen etc. für den neuen Mandanten verwendet werden, dann kann eine komplett leere Datenbank vom Einrichtungsassistenten eingerichtet werden. Dazu sind im Vorfeld jedoch einige Punkte zu beachten, damit der Einrichtungsassistent erfolgreich durchgeführt werden kann.

privateSettings.config anpassen

In der zentralen Steuerungsdatei für die Report Server Anwendung des neuen Mandanten, die sich im WebUI-Unterverzeichnis (C:\Program Files\combit\combit Report Server QA\WebUI\privateSettings.config) befindet, müssen nun noch die folgenden Änderungen vorgenommen werden. Öffnen Sie dazu die Datei mit einem Text-Editor und beachten Sie bitte, dass Sie zum Abspeichern der Änderungen in der Datei Administratorenberechtigungen benötigen.


<setting key="IsDbReady">false</setting>

<setting key="CacheDir">C:\ProgramData\combit\combit Report Server Cache QA</setting>

<setting key="InstanceIdentifier">combitReportServerQA</setting>

Einrichtungsassistenten starten

Da Änderungen in der Datei privateSettings.config vorgenommen wurden, muss nun der neu erstellte AppPool combitReportServerQA im Internetinformationsdienste (IIS)-Manager neu gestartet werden. Jetzt kann der bisherige Zustand des neuen Mandanten im Browser über die Adresse http://localhost/combitReportServerQA gestartet werden, wodurch der Einrichtungsassistent automatisch startet. Geben Sie hier den gewünschten Datenbanknamen - in unserem Beispiel combitReportServerQA - im Assistenten ein und folgenden Sie den weiteren Schritten - aber nur bis zur Prüfung der Voraussetzungen. Denn in diesem Schritt folgen Sie nun bitte erst dem Punkt Geplante Berichte (2): Task Service konfigurieren und starten (siehe weiter unten), bevor Sie im Einrichtungsassistenten fortfahren, damit erst dann im Anschluss die Voraussetzungen abschließend geprüft und der Einrichtungsassistent erfolgreich abgeschlossen werden kann.

Geplante Berichte (2): Task Service konfigurieren und starten

Damit der neue Task Service auch mit den Einstellungen der neuen Datenbank arbeitet, müssen diesem noch die entsprechenden Settings mitgeteilt werden.

privateSettings.config kopieren

Der aktuelle Stand der Datei privateSettings.config aus dem WebUI-Verzeichnis des neuen Mandanten (C:\Program Files\combit\combit Report Server QA\WebUI\privateSettings.config) muss nun in das Verzeichnis des Task Services des neuen Mandanten unter C:\Program Files\combit\combit Report Server QA\TaskService kopiert werden.

Dienst starten

Starten Sie nun den neuen angelegten Dienst mit dem folgenden Kommando in einer Windows Eingabeaufforderung, die mit Administratorenberechtigungen ausgeführt wird:
sc.exe start "combit Report Server QA Task Service"

Ob der Dienst erfolgreich gestartet wurde, können Sie mit dem folgenden Kommando ermitteln:
sc.exe query "combit Report Server QA Task Service"

Starten des neuen Mandanten

Nun ist es an der Zeit, dass der neue Mandant ausgeführt und gestartet wird. Dazu muss der zuvor neu erstellte AppPool combitReportServerQA im Internetinformationsdienste (IIS)-Manager gestartet werden. Nun ist die Konfiguration des neuen Mandanten combitReportServerQA abgeschlossen und dieser kann über den Browser auf dem Server mit der Adresse http://localhost/combitReportServerQA gestartet werden.

Hinweis: Der erste Start der Anwendung über den Browser kann ein wenig länger dauern, bis alle Laufzeitmodule etc. geladen sind. Unter Umständen werden Sie im Dashboard des neuen Mandanten dazu aufgefordert, den eingestellten Standarddrucker zu überprüfen bzw. auf den Microsoft XPS Document Writer zurückzustellen.

Service Pack- oder Patch-Installationen

Da nun jeder Report Server Mandant seine eigene Datenbank, Verzeichnisse etc. hat, um ein maximales Maß an Unabhängigkeit zu gewährleisten, gestaltet sich in diesem Szenario sowohl die reguläre Service Pack-Installation wie auch die Manuelle Patch-Installation ein wenig aufwändiger. Sobald der ursprüngliche Mandant aktualisiert wurde, müssen die Dateien aus dessen Installationsordner (im Standard ist das meist C:\Program Files\combit\combit Report Server\) auf die anderen Mandanten entsprechend manuell übertragen werden.

Achtung: Bevor die Dateien manuell in den Verzeichnissen der Mandanten ersetzt werden, müssen Sie unbedingt zuvor die Datei privateSettings.config sichern - sowohl für das WebUI-Verzechnis und auch das TaskService-Verzeichnis. Diese sollten nach Abschluss des Kopiervorgangs entsprechend wieder eingespielt werden, da hier die wichtigen Daten des Mandanten wie Verzeichnisse, Datenbank etc. enthalten sind.

Ausblick und weiteres Arbeiten

Sollen einzelnen Berichte, Datenquellen etc. eines Report Server Mandanten in einen anderen Mandanten übertragen werden, so kann hierzu bequem die Import-/Export-Funktion verwendet werden. Eine kurze Beschreibung hierzu findet sich in der Online-Dokumentation in Kapitel Importieren/Exportieren.