gMSA を使用した SQL Server のセットアップ、起動、および認証の失敗のトラブルシューティング

適用対象: WindowsのSQL Server

まとめ

この記事は、SQL Serverのインストール、アップグレード、サービスの起動、SQL Server エージェント、フェールオーバー クラスター インスタンス (FCI)、Kerberos、リンク サーバー、および可用性グループの障害のエントリ ポイントです。これは、SQL Server サービスがグループ管理サービス アカウント (gMSA) で実行されたときに発生します。 これらの症状のほとんどは、gMSA が関係するかどうかの根本原因が同じであるため、各シナリオの記事では gMSA 固有のチェックと、残りの部分の正規のトラブルシューティング記事へのリンクを分離します。

クイック検証チェックリストから始めます。 次に、観察されたエラーに一致する トラブルシューティング パスを 使用して、診断と解決の手順を含むシナリオの記事を見つけます。 マネージド サービス アカウントや gMSA など、SQL Serverのサービス アカウントの選択と構成の背景については、「Windowsサービス アカウントとアクセス許可の構成」を参照してください。 Active Directoryでの gMSA の作成と管理については、「グループ管理サービス アカウントの管理」を参照してください。

前提条件

Important

サービス アカウント、セキュリティ ポリシー、レジストリ値、SPN、またはフェールオーバー クラスターの設定を変更する前に、証拠を収集します。 障害時刻とサーバーのタイム ゾーンを記録します。 影響を受けるすべてのスタンドアロン サーバー、クラスター ノード、またはレプリカでホスト検証コマンドをローカルで実行し、結果を比較します。 アカウント、サービス、インスタンス、ドメイン名の例を、実際の環境の値に置き換えます。

クイック検証チェックリスト

シナリオ固有の記事を開く前に、影響を受けるすべてのホストでこれらのチェックを実行します。 FCI または可用性グループの場合は、可能なすべての所有者ノードまたはレプリカで実行し、結果を比較します。

  1. SQL Server 構成マネージャー で ログオン アカウント の値と、SERVICE_START_NAME からの sc.exe qc 出力を確認して、構成されている SQL Server サービスおよび SQL Server エージェント サービスのアカウントを確認します。

    既定のインスタンスの場合は、次のコマンドを実行します。

    sc.exe qc MSSQLSERVER
    sc.exe qc SQLSERVERAGENT
    

    予期される結果:SERVICE_START_NAME は、目的の gMSA を識別します。 名前付きインスタンスの場合は、 MSSQL$<InstanceName> と SQLAgent$<InstanceName>を使用します。 <InstanceName>をインスタンス名に置き換えます。

  2. Get-ADServiceAccountを実行し、目的のアカウントが返されることを確認して、Active Directoryが gMSA を見つけることができることを確認します。

    管理者特権の PowerShell セッションで次のコマンドを実行します。

    Get-ADServiceAccount -Identity 'SQLgMSA' -Properties PrincipalsAllowedToRetrieveManagedPassword
    

    予期される結果:Get-ADServiceAccount は目的のアカウントを返し、ホストを一覧表示します。

  3. ホスト コンピューター アカウント、またはそのアカウントを含むグループが、 PrincipalsAllowedToRetrieveManagedPasswordに一覧表示されていることを確認します。

  4. Test-ADServiceAccountをローカルで実行し、Trueが返されることを確認して、影響を受けるすべてのホストまたは所有者ノードからのパスワード取得をテストします。

    管理者特権の PowerShell セッションで次のコマンドを実行します。

    Test-ADServiceAccount -Identity 'SQLgMSA'
    

    予期される結果:Test-ADServiceAccountは、SQL Server サービスを実行できるすべてのホストでTrueを返します。

  5. sc.exe qmanagedaccount を正確な SQL Server または SQL Server エージェント のサービス名を指定して実行し、TRUE と報告されることを確認して、Service Control Manager がそのサービス アカウントを管理対象として扱っていることを確認します。

    既定のインスタンスの場合は、次のコマンドを実行します。

    sc.exe qmanagedaccount MSSQLSERVER
    sc.exe qmanagedaccount SQLSERVERAGENT
    

    予期される結果:qmanagedaccount レポート TRUE。

  6. DNS、ドメイン コントローラーの検出、セキュリティで保護されたチャネルの正常性、時刻同期を確認します。

    次のコマンドを実行します。 contoso.comをActive Directoryドメイン名に置き換えます。

    nltest /dsgetdc:contoso.com
    nltest /sc_verify:contoso.com
    w32tm /query /status
    

    予期される結果: ドメイン コントローラーが検出され、セキュリティで保護されたチャネルが成功し、時刻の状態が正常です。

  7. SQL Serverが開始された場合は、リモートのWindows認証セッションからsys.dm_exec_connectionsにクエリを実行して、現在の認証スキームを確認します。

SQL Serverに固有ではない追加のホスト レベルの gMSA チェックについては、「Windows コンテナーの gMSA のトラブルシューティング」を参照してください。

トラブルシューティング パスを選択する

確認された現象 以下を参照してください。
セットアップが gMSA を拒否するか、検証できない gMSA を使用したセットアップとアップグレードの失敗のトラブルシューティング
0x84BB0001または "アクセスが拒否されました" でセットアップが失敗する エラー 0x84BB0001でセットアップが失敗する
エラー 1069、イベント ID 7041、またはイベント ID 7038 gMSA を使用したサービスの起動エラーのトラブルシューティング
起動時にのみサービスが失敗する gMSA を使用したサービスの起動エラーのトラブルシューティング
IsManagedAccount または qmanagedaccount が FALSE gMSA を使用したサービスの起動エラーのトラブルシューティング
SQL Server エージェント は起動するが、ジョブが失敗する gMSA を使用する SQL Server エージェント ジョブの失敗をトラブルシューティングする
FCI セットアップ、追加ノード、スタートアップ、またはフェールオーバーが失敗する gMSA を使用したフェールオーバー クラスター インスタンスのエラーのトラブルシューティング
NTLM フォールバック、SPN エラー、ANONYMOUS LOGON、または可用性グループ エンドポイントの認証失敗 gMSA を使用した Kerberos と認証エラーのトラブルシューティング
エラー 29569 でアップグレードが失敗する SQL Serverアップグレードがエラー 29569 で失敗する

診断データの収集

クイック検証チェックリストとシナリオ固有のチェックで原因が特定されない場合は、調査を続行する前に次の診断データを収集するか、サポート ケースを開きます。 証拠が相互に関連付けられるように、同じエラー間隔からすべての成果物を収集します。

影響を受けるすべてのホスト、ノード、またはレプリカから、次の gMSA 固有の証拠を収集します。

  • Get-ADServiceAccount出力(PrincipalsAllowedToRetrieveManagedPasswordを含む)。
  • Test-ADServiceAccount 結果。
  • SQL Server および SQL Server エージェント サービスの sc.exe qc と sc.exe qmanagedaccount の出力
  • nltest /dsgetdc、 nltest /sc_verify、および w32tm /query /status 出力。
  • 有効なユーザー権限の割り当てと gpresult 出力。
  • gMSA の SPN 所有権と重複チェック。
  • FCI の場合、リソース遷移をカバーするクラスター ログ。

次の標準SQL Server診断データを同じ間隔で収集します。

  • Summary.txt、Detail.txt、機能固有のログを含むセットアップ ログ。 SQL Server セットアップ ログ ファイルの表示と読み取りを参照してください。
  • 現在およびアーカイブされたSQL Serverエラー ログ、SQL Server エージェント ログ、失敗したジョブ履歴。
  • システム、アプリケーション、および関連するセキュリティ イベント ログ。

ツールの選択と自動収集については、SQL Serverのトラブルシューティングツールと診断ツールを参照してください。 SQL LogScout を使用して、調査に適した収集を自動化できます。