構成の読み込みエラーのため、AD FS Windows サービスを開始できませんでした

Microsoft.ActiveDirectoryFederationServices2012R2.FederationServerServiceConfigurationInitializationErrorMonitor (UnitMonitor)

Knowledge Base article:

概要

AD FS 構成データベースを正しく読み込めなかったため、AD FS Windows サービスを開始できませんでした。

AD FS Windows サービスが正常に開始する場合、モニターは緑色の状態に戻り、元の重要なアラートは自動的に解決されます。

原因

このイベントは、以下の原因によって発生する可能性があります。

原因

解決方法

SQL Server データベースをホストしているリモート コンピューターに到達できません。

Ping.exe を使用して、フェデレーション サーバーからリモート コンピューターに到達できることを確認してください。

SQL Server が実行され、AD FS 構成データを格納するために構成されているコンピューターが開始されていません。

AdfsConfiguration データベースをホストする SQL Server インスタンスを開始してください。

SQL Server をホストするコンピューター上でサービスが "sc query mssqlserver" を実行していることを確認し、ステータスが「実行中」になっていることを確認してください。これは、SQL Server の既定のインスタンスが使用されていることを前提としています。各 SQL Server データベース インスタンスにはそれぞれ独自のサービスがあり、サーバー マネージャーのサービス ノードを調べて、それらのサービスの名前を確認できます。対応する名前付きインスタンスを見つけたら、SQL Server を実行しているリモート コンピューターで "net start mssqlserver" を使用してサービスを開始してください。

AD FS 構成データを保存するために構成されている Windows Internal Database (WID) が開始されていません。

AdfsConfiguration データベースをホストする WID インスタンスを開始してください。

フェデレーション サービスをホストしているコンピューター上でサービスが "sc query mssql$microsoft##ssee" を実行していることを確認し、ステータスが「実行中」になっていることを確認してください。これは、使用されている既定の WID インスタンス名です。フェデレーション サーバー コンピューターで net start mssql$microsoft##ssee を使用して、サービスを開始してください。

AD FS Windows サービス ID が SQL Server にログオンできません。

SQL Server が NetworkService や LocalSystem などのビルトイン アカウントで実行されていることを確認してください。SQL Server がドメイン アカウントで実行されている場合は、そのアカウントのサービス プリンシパル名 (SPN) が正しく登録されていることを確認してください。

SPN を確認するには、SetSpn.exe コマンドで次の構文を使用してください。

SetSpn -L <serviceaccount>

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

また、このエラーの他の解決方法として、SQL Management Studio を使用して SQL Server に接続して以下の設定を確認する方法があります。

  • 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 サービス ID は SQL Server にログオンできますが、AdfsConfiguration データベースにはアクセスできません。

SQL Server Management Studio を使用する場合は、AD FS Windows サービス ID を IdentityServerPolicy スキーマの所有者にしてください (前の解決方法を参照してください)。

SQL Server がタイムアウトしました。

このエラーは、以下の方法で解決できる可能性があります。

  • コンピューターでホストされている他のデータベースを調べ、SQL Server インストールのクエリ負荷を確認してください。

  • 専用サーバーで AdfsConfiguration をホストすることを検討してください。

  • SQL Server を再起動してください。

AD FS エンドポイントに、ACL のアクセス許可が正しく設定されていません。

再度 AD FS フェデレーション サーバー構成ウィザードを実行して、指定したエンドポイントの ACL のアクセス許可を修復してください。

解決方法

上記を参照してください。

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 サービスを開始できませんでした
AD FS 構成データベースを正しく読み込めませんでした。AD FS Windows サービスを開始できませんでした。
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>