Avvio del servizio Windows ADFS non riuscito a causa di un errore di caricamento della configurazione

Microsoft.ActiveDirectoryFederationServices2012R2.FederationServerServiceConfigurationInitializationErrorMonitor (UnitMonitor)

Knowledge Base article:

Riepilogo

Non è stato possibile avviare il servizio Windows ADFS perché il database di configurazione di ADFS non è stato caricato correttamente.

Se il servizio Windows ADFS viene avviato correttamente, viene ripristinato lo stato di integrità "verde" del monitoraggio e l'avviso critico originale viene risolto automaticamente.

Cause

Di seguito sono riportate le possibili cause di questo evento:

Causa

Soluzione

Il computer remoto che ospita il database SQL Server non è raggiungibile.

Utilizzare Ping.exe per verificare che il server federativo sia in grado di raggiungere il computer remoto.

Il computer che esegue SQL Server è configurato per l'archiviazione dei dati di configurazione di ADFS non è avviato.

Avviare l'istanza di SQL Server che ospita il database AdfsConfiguration.

Verificare che il servizio stia eseguendo "sc query mssqlserver" nel computer che ospita SQL Server e controllare che STATE = RUNNING. L'operazione presuppone che sia in uso l'istanza predefinita di SQL Server. Ogni istanza del database di SQL Server dispone di propri servizi ed è possibile controllarne i nomi esaminando il nodo Servizi in Server Manager. Dopo aver individuato l'istanza denominata corrispondente, avviare il servizio utilizzando "net start mssqlserver" nel computer remoto in cui è in esecuzione SQL Server.

Il database interno di Windows configurato per archiviare i dati di configurazione di ADFS non è avviato.

Avviare l'istanza del database interno di Windows che ospita il database AdfsConfiguration.

Verificare che il servizio stia eseguendo "sc query mssql$microsoft##ssee" nel computer che ospita il servizio federativo e controllare che STATE = RUNNING. Nota: questo è il nome dell'istanza predefinita del database interno di Windows utilizzata. Avviare il servizio utilizzando "net start mssql$microsoft##ssee" nel computer del server federativo.

L'istanza del servizio Windows ADFS non è in grado di accedere a SQL Server.

Assicurarsi che SQL Server sia in esecuzione con un account predefinito, ad esempio NetworkService o LocalSystem. Se SQL Server è in esecuzione con un account di dominio, verificare che il Nome principale servizio (SPN, Service Principal Name) per tale account sia stato registrato correttamente.

Per verificare l'SPN, utilizzare la sintassi seguente con il comando SetSpn.exe:

SetSpn -L <serviceaccount>

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

Un'altra soluzione possibile di questo errore consiste nel connettersi a SQL Server mediante SQL Management Studio e verificare le impostazioni seguenti:

  • 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.

L'identità del servizio Windows ADFS può accedere a SQL Server, ma non ha accesso al database AdfsConfiguration.

Utilizzando SQL Server Management Studio, rendere l'identità del servizio Windows ADFS proprietaria dello schema IdentityServerPolicy (vedere la soluzione precedente).

Timeout di SQL Server.

Di seguito sono riportate le possibili soluzioni per questo errore:

  • Determinare il carico di query dell'installazione di SQL Server esaminando gli altri database ospitati nel computer.

  • È consigliabile ospitare AdfsConfiguration in un server dedicato.

  • Riavviare SQL Server.

Le autorizzazioni ACL non sono impostate correttamente per gli endpoint ADFS.

Eseguire nuovamente la configurazione guidata del server federativo ADFS per correggere le autorizzazioni ACL per gli endpoint specificati.

Soluzioni

Vedere sopra.

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
Avvio del servizio Windows ADFS non riuscito a causa di un errore di caricamento della configurazione
Impossibile caricare correttamente il database di configurazione di ADFS. Avvio del servizio Windows ADFS non riuscito.
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>