次の方法で共有


既定のユーザー権限が削除された後に 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.
    

    Note

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

原因

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

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

Note

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. ローカル セキュリティ設定 ダイアログ ボックスで、ローカル ポリシーを選択し、User Rights Assignmentを開き、バックアップ ファイルとディレクトリをダブルクリックします。
  5. [ファイルとディレクトリのプロパティの]ダイアログ ボックスで、[ユーザーまたはグループの追加を選択
  6. [ ユーザーまたはグループの選択 ] ダイアログ ボックスで、セットアップに使用するユーザー アカウントを入力し、 OK 2 回選択します。

    Note

    Debug ProgramsおよびManage auditing and security log ポリシーのユーザー アカウントを追加するには、手順 1 から 6 を実行します。

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

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

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

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

Note

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

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

SQL Server 2012 以降、Microsoft は SMB ファイル共有上のデータ ファイルとログ ファイルをサポートしています。 この改善の一環として、セットアップ エクスペリエンスがさらに強化され、インストール後のアクセス許可が不十分なため、お客様にエラーや問題が発生しないようにセキュリティ チェックが強化されます。 SQL Server 2012 より前のバージョンでは、SQL サービス アカウントにバックアップを実行するアクセス許可がない場合でも、ユーザーはバックアップ ディレクトリのネットワーク共有パスを設定できます。 ただし、このような状況では、インストール後にエラーが発生します。 これらのシナリオは、ネットワーク共有で 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 サービス アカウントと権限の構成」を参照してください。