SQL Server se produce un error en la instalación después de quitar los derechos de usuario predeterminados

Este artículo le ayuda a resolver un problema que se produce al instalar o actualizar Microsoft SQL Server después de reforzar la seguridad.

Se aplica a: SQL Server

Síntomas

Tenga en cuenta el escenario en el que se ejecuta Microsoft SQL Server en Windows. Para reforzar la seguridad, quite algunos derechos de usuario predeterminados del grupo de administradores locales. Para configurar SQL Server en el sistema, agregue la cuenta de instalación al grupo de administradores locales.

En este escenario, si intenta instalar o actualizar SQL Server, se produce un error en el proceso de instalación y es posible que reciba un mensaje de error similar a uno de los mensajes que se enumeran de la siguiente manera:

  • Escenario 1: Si se produce un error en una nueva instalación, recibirá el siguiente mensaje de error:

    Access is denied
    

    También puede recibir mensajes de error similares a los siguientes en el archivo 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.  
    
  • Escenario 2: Si se produce un error en una nueva instalación de Microsoft SQL Server 2012 o Microsoft SQL Server 2008 R2, recibirá uno de los siguientes mensajes de error:

    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.
    
  • Escenario 3: Si se produce un error en la instalación de SQL Server 2012 o una versión posterior al especificar un recurso compartido de red (ruta de acceso UNC) para la ubicación del directorio de copia de seguridad, recibirá el siguiente mensaje de error:

    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.
    

    Nota:

    Este problema se produce porque la cuenta de instalación de SQL Server no tiene los SeSecurityPrivilege permisos en el servidor de archivos que hospeda el recurso compartido de red.

Causa

Si ejecuta la instalación como administrador local, necesita los siguientes derechos de usuario para que la instalación se ejecute correctamente:

Nombre para mostrar del objeto directiva de grupo local Derecho del usuario
Archivos y directorios de copia de seguridad SeBackupPrivilege
Depurar programas SeDebugPrivilege
Administración de registros de auditoría y seguridad SeSecurityPrivilege

Nota:

Para obtener más información sobre los permisos necesarios para instalar SQL Server, consulte la sección "Requisitos previos" de los artículos siguientes:

Si una opción de almacenamiento para el directorio de datos u otros directorios (directorio de base de datos de usuario, directorio de registro de base de datos de usuario, directorio TempDB, directorio de registro tempDB o directorio de copia de seguridad) usa el recurso compartido de archivos SMB, la cuenta de instalación requiere los siguientes permisos adicionales en el servidor de archivos SMB, tal como se describe en Instalación de SQL Server con almacenamiento de recursos compartidos de archivos SMB.

Carpeta de recurso compartido de red SMB CONTROL TOTAL Cuenta de instalación de SQL
Carpeta de recurso compartido de red SMB CONTROL TOTAL SQL Server y Agente SQL Server cuenta de servicio
Servidor de archivos SMB SeSecurityPrivilege Cuenta de instalación de SQL

Solución

Para agregar los derechos a la cuenta de instalación, siga estos pasos:

  1. Inicie sesión como administrador.
  2. Seleccione Iniciar>ejecución, escriba Control admintools y, a continuación, seleccione Aceptar.
  3. Haga doble clic en Directiva de seguridad local.
  4. En el cuadro de diálogo Configuración de seguridad local , seleccione Directivas locales, abra Asignación de derechos de usuario y, a continuación, haga doble clic en Archivos y directorios de copia de seguridad.
  5. En el cuadro de diálogo Propiedades de archivos y directorios de copia de seguridad , seleccione Agregar usuario o grupo.
  6. En el cuadro de diálogo Seleccionar usuario o grupos , escriba la cuenta de usuario que desea usar para la configuración y, a continuación, seleccione Aceptar dos veces.

    Nota:

    Para agregar la cuenta de usuario para depurar programas y administrar directivas de registro de auditoría y seguridad , realice los pasos del 1 al 6 .

  7. En el menú Archivo , abra el cuadro de diálogo Configuración de seguridad local y, a continuación, seleccione Salir para cerrar.

Preguntas más frecuentes (P+F)

¿Por qué se SeSecurityPrivilege requiere en el servidor de archivos para el directorio de copia de seguridad en el recurso compartido UNC?

Este permiso es necesario para recuperar Access Control Listas (ACL) en el directorio de copia de seguridad predeterminado para asegurarse de que la cuenta de servicio SQL Server tiene permisos completos en la carpeta. La cuenta de servicio también establece las ACL si faltan permisos para la cuenta de servicio sql para que se pueda ejecutar una copia de seguridad del directorio. El programa de instalación ejecuta estas comprobaciones para el directorio de copia de seguridad predeterminado para que, si se realiza una copia de seguridad después de la instalación, no se produzca un error (debido a que faltan permisos).

Nota:

SeSecurityPrivilege es necesario cambiar de get/set ACLs los directorios y subcarpetas. Esto es cierto incluso si los usuarios que tienen permisos DE CONTROL TOTAL en los directorios no tienen permisos para get/set OWNER y auditan la información del directorio.

¿Por qué el error que se describe en el escenario 3 solo se produce en Microsoft SQL Server 2012 y versiones posteriores?

A partir de SQL Server 2012, Microsoft proporciona compatibilidad con los archivos de datos y de registro en el recurso compartido de archivos SMB. Como parte de esta mejora, la experiencia de instalación se ha mejorado aún más para reforzar las comprobaciones de seguridad para que los clientes no encuentren errores o problemas debido a permisos insuficientes después de la instalación. En versiones anteriores a SQL Server 2012, los usuarios todavía pueden configurar la ruta de acceso del recurso compartido de red para el directorio de copia de seguridad si la cuenta del servicio SQL no tiene permisos para ejecutar una copia de seguridad. Sin embargo, esos usuarios experimentarán un error después de la instalación en esta situación. Estos escenarios ahora se impiden al iniciar la comprobación de instalación de SQL 2012 en un recurso compartido de red.

Más información

  • Para comprobar la lista de privilegios que están asociados actualmente a la cuenta de instalación, use la herramienta AccessChk.exe . Para descargar esta herramienta, consulte AccessChk v6.13.

    Uso: accesschk.exe- a \<setup account> *

    Por ejemplo: 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
    
  • Para obtener más información, vea Configurar cuentas de servicio y permisos de Windows.