既定SQL Serverユーザー権限が削除された後にインストールが失敗する

この記事は、セキュリティを強化した後に Microsoft SQL Serverをインストールまたはアップグレードするときに発生する問題を解決するのに役立ちます。

適用対象: SQL Server

現象

Windows で Microsoft SQL Serverを実行しているシナリオを考えてみましょう。 セキュリティを強化するには、ローカル管理者グループから既定のユーザー権限を削除します。 システムにSQL Serverを設定するには、セットアップ アカウントをローカル管理者グループに追加します。

このシナリオでは、SQL Serverをインストールまたはアップグレードしようとすると、インストール プロセスが失敗し、次のようなメッセージのいずれかに似たエラー メッセージが表示される場合があります。

  • シナリオ 1: 新しいインストールが失敗した場合は、次のエラー メッセージが表示されます。

    Access is denied
    

    Detail.txt ファイルでは、次のようなエラー メッセージが表示される場合もあります。

    2009-01-02 13:00:17 SQLEngine: --SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$NIIT' to be created  
    2009-01-02 13:00:20 SQLEngine: --SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$NIIT' or sql process handle to be signaled  
    2009-01-02 13:00:20 Slp: Configuration action failed for feature SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC.  
    2009-01-02 13:00:20 Slp: Access is denied  
    2009-01-02 13:00:20 Slp: Configuration action failed for feature SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC.  
    2009-01-02 13:00:20 Slp: System.ComponentModel.Win32Exception: Access is denied  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.Process.OpenProcessHandle()  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.Process.get_Handle()  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerServiceBase.WaitSqlServerStart(Process processSql)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerServiceSCM.StartSqlServer(String[] parameters)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerStartup.StartSQLServerForInstall(String sqlCollation, String masterFullPath, Boolean isConfiguringTemplateDBs)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.ConfigSQLServerSystemDatabases(EffectiveProperties properties, Boolean isConfiguringTemplateDBs, Boolean useInstallInputs)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.DoCommonDBStartConfig(ConfigActionTiming timing)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.Install(ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcb)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcbCurrent)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcbCurrent)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter errorStream)  
    2009-01-02 13:00:20 Slp: Exception: System.ComponentModel.Win32Exception.  
    2009-01-02 13:00:20 Slp: Source: System.  
    2009-01-02 13:00:20 Slp: Message: Access is denied.  
    
  • シナリオ 2:Microsoft SQL Server 2012 または Microsoft SQL Server 2008 R2 の新しいインストールが失敗した場合、次のいずれかのエラー メッセージが表示されます。

    Rule "Setup account privileges" failed.  
    
    The account that is running SQL Server Setup doesn't have one or all of the following rights: the right to back up files and directories, the right to manage auditing and the security log and the right to debug programs. To continue, use an account with both of these rights.
    
  • シナリオ 3:バックアップ ディレクトリの場所にネットワーク共有 (UNC パス) を指定したときに、SQL Server 2012 以降のバージョンのインストールが失敗した場合、次のエラー メッセージが表示されます。

    SQL Server setup account does not have the `SeSecurityPrivilege` on the specified file server in the path *\<UNC backup location>*. This privilege is required to set folder security in the SQL Server setup program. To grant this privilege, use the Local Security Policy console on this file server to add SQL Server setup account to **Manage auditing and security log** policy. This setting is available in the **User Rights Assignments** section under Local Policies in the Local Security Policy console.
    

    注:

    この問題は、SQL Server セットアップ アカウントに、ネットワーク共有をSeSecurityPrivilegeホストするファイル サーバーに対するアクセス許可がないために発生します。

原因

セットアップをローカル管理者として実行している場合、セットアップを正常に実行するには、次のユーザー権限が必要です。

ローカル グループ ポリシー オブジェクトの表示名 ユーザー権限
バックアップ ファイルとディレクトリ SeBackupPrivilege
デバッグ プログラム SeDebugPrivilege
監査ログとセキュリティ ログを管理する SeSecurityPrivilege

注:

SQL Serverのインストールに必要なアクセス許可の詳細については、次の記事の「前提条件」セクションを参照してください。

データ ディレクトリまたはその他のディレクトリ (ユーザー データベース ディレクトリ、ユーザー データベース ログ ディレクトリ、TempDB ディレクトリ、TempDB ログ ディレクトリ、またはバックアップ ディレクトリ) のストレージ オプションで SMB ファイル共有を使用する場合、「SMB ファイル共有ストレージを使用したSQL Serverのインストール」の説明に従って、セットアップ アカウントには SMB ファイル サーバーに対する次の追加のアクセス許可が必要です。

SMB ネットワーク共有フォルダー フル コントロール SQL セットアップ アカウント
SMB ネットワーク共有フォルダー フル コントロール サービス アカウントのSQL ServerとSQL Server エージェント
SMB ファイル サーバー SeSecurityPrivilege SQL セットアップ アカウント

解決方法

セットアップ アカウントに権限を追加するには、次の手順に従います。

  1. 管理者としてログオンします。
  2. [Start Run]\(実行の開始\>) を選択し、「Control admintools」と入力し、[OK] を選択します
  3. [ローカル セキュリティ ポリシー] をダブルクリックします。
  4. [ ローカル セキュリティ設定] ダイアログ ボックスで、[ ローカル ポリシー] を選択し、[ ユーザー権利の割り当て] を開き、[ バックアップ ファイルとディレクトリ] をダブルクリックします。
  5. [ バックアップ ファイルとディレクトリのプロパティ ] ダイアログ ボックスで、[ ユーザーまたはグループの追加] を選択します。
  6. [ ユーザーまたはグループの選択 ] ダイアログ ボックスで、セットアップに使用するユーザー アカウントを入力し、[ OK] を 2 回選択します。

    注:

    デバッグ プログラムのユーザー アカウントを追加し、監査とセキュリティ ログ ポリシーを管理するには、手順 1 ~ 6 を実行します。

  7. [ ファイル ] メニューの [ ローカル セキュリティ設定] ダイアログ ボックスを開き、[ 終了 ] を選択して閉じます。

よく寄せられる質問 (FAQ)

SeSecurityPrivilege UNC 共有のバックアップ ディレクトリにファイル サーバーで必要なのはなぜですか?

このアクセス許可は、既定のバックアップ ディレクトリのAccess Control Lists (ACL) を取得して、SQL Server サービス アカウントがフォルダーに対する完全なアクセス許可を持っていることを確認するために必要です。 サービス アカウントは、ディレクトリのバックアップを実行できるように、SQL サービス アカウントに対するアクセス許可がない場合にも ACL を設定します。 セットアップ プログラムは、既定のバックアップ ディレクトリに対してこれらのチェックを実行して、インストール後にバックアップを実行した場合、(アクセス許可がないため) エラーが発生しないようにします。

注:

SeSecurityPrivilege は、ディレクトリとサブフォルダーから を get/set ACLs 変更するために必要です。 これは、ディレクトリに対する FULL CONTROL アクセス許可を持つユーザーが、ディレクトリの情報に対するアクセス許可と監査権限を get/set OWNER 持っていない場合でも当てはまります。

シナリオ 3 で説明されているエラーが Microsoft SQL Server 2012 以降のバージョンでのみ発生するのはなぜですか?

2012 年SQL Server以降、Microsoft は SMB ファイル共有でデータ ファイルとログ ファイルをサポートしています。 この改善の一環として、セットアップ エクスペリエンスがさらに強化され、インストール後にアクセス許可が不足しているためにエラーや問題が発生しないようにセキュリティ チェックが強化されます。 SQL Server 2012 より前のバージョンでは、SQL Service アカウントにバックアップを実行するためのアクセス許可がない場合でも、ユーザーはバックアップ ディレクトリのネットワーク共有パスを設定できます。 ただし、このような状況では、インストール後にエラーが発生します。 これらのシナリオは、ネットワーク共有で SQL 2012 セットアップ チェックを開始するときに防止されるようになりました。

詳細

  • セットアップ アカウントに現在関連付けられている特権の一覧をチェックするには、AccessChk.exe ツールを使用します。 このツールをダウンロードするには、「 AccessChk v6.13」を参照してください。

    使用法: accesschk.exe- a \<setup account> *

    例: c:\tools\accesschk.exe -a testdc\setupaccount *

      Sample output:
             SeSecurityPrivilege
              SeBackupPrivilege
              SeRestorePrivilege
              SeSystemtimePrivilege
              SeShutdownPrivilege
              SeRemoteShutdownPrivilege
              SeTakeOwnershipPrivilege
              SeDebugPrivilege
              SeSystemEnvironmentPrivilege
              SeSystemProfilePrivilege
              SeProfileSingleProcessPrivilege
              SeIncreaseBasePriorityPrivilege
              SeLoadDriverPrivilege
              SeCreatePagefilePrivilege
              SeIncreaseQuotaPrivilege
              SeChangeNotifyPrivilege
              SeUndockPrivilege
              SeManageVolumePrivilege
              SeImpersonatePrivilege
              SeCreateGlobalPrivilege
              SeTimeZonePrivilege
              SeCreateSymbolicLinkPrivilege
              SeInteractiveLogonRight
              SeNetworkLogonRight
              SeBatchLogonRight
              SeRemoteInteractiveLogonRight
    
  • 詳細については、「 Windows サービス アカウントとアクセス許可の構成」を参照してください