删除默认用户权限后 SQL Server 安装失败

本文可帮助你解决在加强安全性后安装或升级 SQL Server Microsoft时发生的问题。

适用范围: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. “文件 ”菜单中,打开 “本地安全设置” 对话框,然后选择“ 退出 ”关闭。

常见问题 (FAQ)

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

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

注意

SeSecurityPrivilege 需要更改 get/set ACLs 目录和子文件夹。 即使对目录具有 FULL CONTROL 权限的用户无权 get/set OWNER 访问和审核目录中的信息,也是如此。

为什么方案 3 中描述的错误仅在 sql Server 2012 及更高版本中Microsoft发生?

从 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 服务帐户和权限预览版本升级问题的解答。