bei einem Kunden nutzen wir den Report Server mit einer Oracle Datenbank.
Vom Datenbankadministrator haben wir die Information bekommen, dass der Report Server eine nicht mehr aktive (idle) Oracle Session offen hält.
Gibt es beim Report Server eine Möglichkeit die Datenbankverbindungen bei Nichtbenutzung automatisch zu beenden?
An sich werden Datenbankconnections immer so schnell wie möglich geschlossen. Ist das Problem beliebig reproduzierbar? Dann sollte unser Support einmal einen Blick darauf werfen. Eventuell wird die Verbindung auch durch die Connection-Pooling-Einstellungen des Servers offen gehalten, hier ist eine Beschreibung von der Oracle-Webseite dazu. Dann liesse sich das Problem über eine eigene Verbindungszeichenfolge lösen, dafür muss der Expertenmodus aktiviert werden. Beachten Sie allerdings, dass Sie dann die Vorteile des Connection-Poolings verlieren. Ein Beispiel für eine solche Zeichenfolge wäre (beachten Sie insbesondere den letzten Parameter):
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myserver)(PORT=1521))(CONNECT_DATA=(SERVICENAME=XE)));User Id=system;Password=myPassword;Connection Timeout=60;Pooling=false
Ich habe mich mit dem Thema befasst und folgendes herausgefunden…wenn ein Report aus der Oberfläche des Report servers aufgerufen wird entsteht auf der Oracle DB eine offene Connection. Diese bleibt bestehen, bis die Datenbank sie irgenwann auf sniped stellt. Ich habe den Apppool des Reportservers im IIS dann mal auf einen Idle Timeout von 1 Minute gestellt. jetzt passiert folgendes: solange das Vorschau Fenster geöffnet ist, bleibt die Connection erhalten. Schließt man selbiges, verschwindet sie nach etwas mehr als 1 Minute, da dann wohl der Apppool sich terminiert. Es ist also dwohl doch so, dass der report server die connection nicht schliesst wenn ein Ausgabefenster offen ist.
Der Vorschlag über den Expertenmodus einen Connectionstring zu erstellen hat den Nachteil, dass dann das DB-Passwort im Klartext in der Datenquelle steht