Die Ausstellung von Zertifikaten oder Sperrlisten schlägt fehl mit Fehlercode CERTSRV_E_NO_DB_SESSIONS

Folgendes Szenario angenommen:

  • Die Zertifizierungsstelle kann keine Zertifikate ausstellen und/oder
  • Die Zertifizierungsstelle kann keine Sperrlisten ausstellen.
  • Es wird mindestens eine der folgende Fehlermeldungen protokolliert:

Ereignis-ID: 53 (Microsoft-Windows-CertificationAuthority)

Active Directory Certificate Services denied request 12345 because An attempt was made to open a Certification Authority database session, but there are already too many active sessions. The server may need to be configured to allow additional sessions. 0x8009400f (-2146877425 CERTSRV_E_NO_DB_SESSIONS). The request was for CN=Rudi Ratlos. Additional information: Denied by Policy Module

Ereignis-ID: 130 (Microsoft-Windows-CertificationAuthority)

Active Directory Certificate Services could not create a certificate revocation list. An attempt was made to open a Certification Authority database session, but there are already too many active sessions. The server may need to be configured to allow additional sessions 0x8009400f (-2146877425). This may cause applications that need to check the revocation status of certificates issued by this CA to fail. You can recreate the certificate revocation list manually by running the following command: "certutil -CRL". If the problem persists, restart Certificate Services.

Beide Fehler können auftreten, wenn zu viele gleichzeitige Sitzungen auf der Zertifizierungsstellen-Datenbank aktiv sind. Jede Transaktion, welche die Zertifizierungsstelle selbst durchführt, entspricht einer Datenbanksitzung, ebenso Aufrufe mit certutil.exe und anderen Anwendungen gegen die Zertifizierungsstellen-Datenbank.

Die Maximale Anzahl gleichzeitiger Zugriffe auf die Zertifizierugsstellen Datenbank kann über zwei Registry-Werte unterhalb des folgenden Schlüssels konfiguriert werden:

HKLM\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\
WertStandardwertBeschreibung
DBSessionCount0x64 (100) seit Windows Server 2008Konzept der zugrundeliegenden JET-Datenbank. Bestimmt den Parameter JET_paramMaxSessions, welchen der CA-Dienst auf der Datenbank setzt. Sind keine Sitzungen mehr verfügbar, wird JetBeginSession mit dem Fehler JET_errOutOfSessions fehlschlagen.
DBMaxReadSessionCountNicht gesetzt. Bestimmt sich aus DBSessionCount geteilt durch 10.Konzept der Zertifizierungsstelle. Bestimmt die maximale Anzahl von gleichzeitigen lesenden (ICertView interface) Datenbanksitzungen.

Beide Werte sollten nur bei konkretem Bedarf verändert werden. Sinnvoller ist es, die Ursache für die vielen offenen Datenbanksitzungen zu ermitteln und abzustellen.

Bevorzugt sollte der DBSessionCount Wert angepasst werden. Eine Erhöhung auf ca. 250 bis 500 sollte die gleichzeitige Verarbeitung von ca. 1.000 Zertifikatanfragen pro Sekunde ermöglichen.

Das Setzen/Verändern von DBMaxReadSessionCount ist in der Regel nicht sinnvoll, da er sich automatisch anhand des Wertes von DBSessionCount ermittelt.

Eine Änderung der Werte wird erst nach einem Neustart des Zertifizierungsstellen-Dienstes effektiv.

Auch das Öffnen (oder geöffnet lassen in einer inaktiven Sitzung) der Zertifizierungsstellen-Verwaltungskonsole erhöht die Anzahl der aktiven (lesenden) Datenbanksitzungen.

Die Anzahl der aktiven Datenbanksitzungen kann auch durch Deaktivieren des "Windows Default" Exit Moduls (wenn es nicht verwendet wird) reduziert werden.

Beide Werte erzeugen bei Überschreitung den gleichen Fehlercode, egal welcher tatsächlich überschritten wurde.

Weiterführende Links:

Externe Quellen

de_DEDeutsch