删除默认用户权限后,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 文件服务器具有以下附加权限,如使用 SMB 文件共享存储安装SQL Server中所述。

SMB 网络共享文件夹 完全控制 SQL 安装程序帐户
SMB 网络共享文件夹 完全控制 SQL Server和SQL Server 代理服务帐户
SMB 文件服务器 SeSecurityPrivilege SQL 安装帐户

解决方案

若要将权限添加到安装帐户,请执行以下步骤:

  1. 以管理员身份登录。
  2. 选择“ 开始>运行”,键入 “控制管理工具”,然后选择“ 确定”。
  3. 双击“ 本地安全策略”。
  4. 在“ 本地安全设置” 对话框中,选择“ 本地策略”,打开“ 用户权限分配”,然后双击“ 备份文件和目录”。
  5. 在“ 备份文件和目录属性 ”对话框中,选择“ 添加用户或组”。
  6. “选择用户或组 ”对话框中,输入要用于设置的用户帐户,然后选择 “确定” 两次。

    注意

    若要为 调试程序 和管理 审核和安全日志 策略添加用户帐户,请执行步骤 1 到步骤 6。

  7. 在“ 文件 ”菜单中,打开“ 本地安全设置 ”对话框,然后选择“ 退出 ”以关闭。

常见问题解答 (常见问题解答)

SeSecurityPrivilege为什么在文件服务器上需要 UNC 共享上的备份目录?

需要此权限才能检索默认备份目录上的访问控制 Lists (ACL) ,以确保 SQL Server 服务帐户对该文件夹具有完全权限。 如果缺少 SQL 服务帐户的权限,服务帐户还会设置 ACL,以便可以运行目录备份。 安装程序对默认备份目录运行这些检查,以便在安装后执行备份时,不会因为缺少权限) 而遇到错误 (。

注意

SeSecurityPrivilege 需要从目录和子文件夹中更改 get/set ACLs 。 即使对目录具有完全控制权限的用户无权访问 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 服务帐户和权限