既定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 セットアップ アカウント |
解決方法
セットアップ アカウントに権限を追加するには、次の手順に従います。
- 管理者としてログオンします。
- [Start Run]\(実行の開始\>) を選択し、「Control admintools」と入力し、[OK] を選択します。
- [ローカル セキュリティ ポリシー] をダブルクリックします。
- [ ローカル セキュリティ設定] ダイアログ ボックスで、[ ローカル ポリシー] を選択し、[ ユーザー権利の割り当て] を開き、[ バックアップ ファイルとディレクトリ] をダブルクリックします。
- [ バックアップ ファイルとディレクトリのプロパティ ] ダイアログ ボックスで、[ ユーザーまたはグループの追加] を選択します。
- [ ユーザーまたはグループの選択 ] ダイアログ ボックスで、セットアップに使用するユーザー アカウントを入力し、[ OK] を 2 回選択します。
注:
デバッグ プログラムのユーザー アカウントを追加し、監査とセキュリティ ログ ポリシーを管理するには、手順 1 ~ 6 を実行します。
- [ ファイル ] メニューの [ ローカル セキュリティ設定] ダイアログ ボックスを開き、[ 終了 ] を選択して閉じます。
よく寄せられる質問 (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 サービス アカウントとアクセス許可の構成」を参照してください。