Compartir a través de


Se produce un error en la instalación de SQL Server 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 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 puede recibir 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 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 de directiva de grupo local Derecho de usuario
Archivos y directorios de copia de seguridad SeBackupPrivilege
Depurar programas SeDebugPrivilege
Administrar la auditoría y el registro de seguridad SeSecurityPrivilege

Nota:

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

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 de 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 recursos compartidos de red SMB CONTROL TOTAL Cuenta de instalación de SQL
Carpeta de recursos compartidos de red SMB CONTROL TOTAL Cuenta de servicio de SQL Server y Agente SQL Server
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 instalación y, a continuación, seleccione Aceptar dos veces.

    Nota:

    Para agregar la cuenta de usuario para los programas de depuración 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 seleccione Salir para cerrar.

Preguntas más frecuentes (P+F)

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

Este permiso es necesario para recuperar listas de control de acceso (ACL) en el directorio de copia de seguridad predeterminado para asegurarse de que la cuenta de servicio de 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 de 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 experimentará un error (debido a que faltan permisos).

Nota:

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

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

A partir de SQL Server 2012, Microsoft proporciona compatibilidad con archivos de registro y datos en el recurso compartido de archivos SMB. Como parte de esta mejora, la experiencia de configuración se mejora 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 configuració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, consulte Configurar los permisos y las cuentas de servicio de Windows.