AD FS Windows-tjänsten kunde inte startas på grund av ett inläsningsfel under konfigurationen

Microsoft.ActiveDirectoryFederationServices2012R2.FederationServerServiceConfigurationInitializationErrorMonitor (UnitMonitor)

Knowledge Base article:

Sammanfattning

AD FS Windows-tjänsten kunde inte starta på grund av att AD FS-konfigurationsdatabasen inte är korrekt inläst.

Vid lyckad uppstart av AD FS Windows-tjänsten ändras bildskärmen till grön status och den ursprungliga kritiska varningen löses automatiskt.

Orsaker

Följande är troliga orsaker till händelsen:

Orsak

Lösning

Fjärrdatorn som är värd för SQL Server-databasen går inte att nå.

Verifiera att fjärrdatorn kan nås från federationsservern genom att använda Ping.exe.

Datorn som kör SQL-servern och som är konfigurerad för att kunna spara AD FS-konfigurationsdata är inte startad.

Starta den SQL-serverinstans som är värd för AdfsConfiguration-databasen.

Verifiera att värddatorn för SQL-servern kör tjänsten "sc query mssqlserver" samt att den har status STATE = RUNNING. Detta förutsätter att SQL Server-databasinstansen används. Alla SQL Server-databasinstanser har sina egna tjänster vars namn du hittar i tjänstnoden i serverhanteraren. Starta tjänsten på fjärrdatorn där SQL-servern genom att använda "net start mssqlserver" när du lokaliserat motsvarande instansnamn.

Den interna Windows-databasen (WID) som är konfigurerad för att kunna spara AD FS-konfigurationsdata är inte startad.

Starta WID-instansen som är värd för AdfsConfiguration-databasen.

Verifiera att värddatorn för federationstjänsten kör sc query mssql$microsoft##ssee samt att den har status STATE = RUNNING. Observera att detta är namnet på den standardinstans för WID som används. Du startar tjänsten genom att använda mssql$microsoft##ssee på federationens serverdator.

AD FS Windows-tjänstsidentiteten lyckas inte logga in på SQL-servern.

Kontrollera att SQL-servern körs i ett inbyggt konto, exempelvis NetworkService eller LocalSystem. Om SQL-servern körs i ett domänkontot behöver du verifiera att tjänstens huvudnamn (SPN) för det kontot är korrekt registrerat.

Du verifiera SPN genom att använda följande syntax med kommandot SetSpn.exe:

SetSpn -L <serviceaccount>

The output of this command should have MSSQLSvc/<SQL server name>.

Du kan även lösa det problem genom att ansluta till SQL-servern via SQL Management Studio och verifiera följande inställningar:

  • Confirm that the AD FS Windows service identity is present under the Security->Logins node in the SQL console.

  • Confirm that the AD FS Windows service identity is present under Databases->AdfsConfiguration->Security->Users, and that it owns the IdentityServerPolicy schema.

AD FS Windows-tjänstsidentiteten loggas in på SQL-servern men kommer inte åt AdfsConfiguration-databasen.

Gör AD FS Windows-tjänstsidentiteten till ägare av IdentityServerPolicy-schemat (se föregående lösning) med hjälp av SQL Server Management Studio.

Tidsgränsen för SQL-server löper ut.

Möjliga lösningar på problemet är följande:

  • Kontrollera frågebelastning i SQL-server-installationen genom att kontrollera övriga databaser som finns på värddatorn.

  • Prova att använda en dedikerad server som värdserver för AdfsConfiguration.

  • Starta om SQL-servern.

ACL-tillstånden för AD FS-slutpunkterna är felaktigt inställda.

Reparera ACL-tillståndet för angiven slutpunkt genom att köra guiden Konfigurera AD FS-federationsserver på nytt.

Lösningar

Se ovan.

Element properties:

TargetMicrosoft.ActiveDirectoryFederationServices2012R2.FederationServer
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.2SingleEventLog2StateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
AD FS Windows-tjänsten kunde inte startas på grund av ett inläsningsfel under konfigurationen
AD FS-konfigurationsdatabasen kunde inte läsas in korrekt. AD FS Windows-tjänsten kunde inte starta.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.ActiveDirectoryFederationServices2012R2.FederationServerServiceConfigurationInitializationErrorMonitor" Accessibility="Public" Enabled="true" Target="Microsoft.ActiveDirectoryFederationServices2012R2.FederationServer" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.2SingleEventLog2StateMonitorType" ConfirmDelivery="true">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.ActiveDirectoryFederationServices2012R2.FederationServerServiceConfigurationInitializationErrorMonitor_AlertMessageResourceID">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
</AlertSettings>
<OperationalStates>
<OperationalState ID="FirstEventRaised" MonitorTypeStateID="FirstEventRaised" HealthState="Error"/>
<OperationalState ID="SecondEventRaised" MonitorTypeStateID="SecondEventRaised" HealthState="Success"/>
</OperationalStates>
<Configuration>
<FirstComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</FirstComputerName>
<FirstLogName>$Target/Property[Type="Microsoft.ActiveDirectoryFederationServices2012R2.FederationServer"]/ADFSEventLog$</FirstLogName>
<FirstExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">220</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>MatchesMOM2005RegularExpression</Operator>
<Pattern>(^AD FS$)</Pattern>
</RegExExpression>
</Expression>
</And>
</FirstExpression>
<SecondComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</SecondComputerName>
<SecondLogName>$Target/Property[Type="Microsoft.ActiveDirectoryFederationServices2012R2.FederationServer"]/ADFSEventLog$</SecondLogName>
<SecondExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">100</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>MatchesMOM2005RegularExpression</Operator>
<Pattern>(^AD FS$)</Pattern>
</RegExExpression>
</Expression>
</And>
</SecondExpression>
</Configuration>
</UnitMonitor>