SQL Server instalación se produce un error si la cuenta de instalación no tiene determinados derechos de usuario

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

Versión original del producto:   SQL Server 2008, SQL Server 2008 R2, SQL Server 2012
Número KB original:   2000257

Síntomas

Tenga en cuenta la situación siguiente. Para reforzar la seguridad, se quitan algunos derechos de usuario predeterminados para el grupo de administradores locales en un sistema operativo Windows. En la preparación para configurar SQL Server en este sistema, agregue la cuenta de instalación al grupo de administradores locales.

En este escenario, si instala o actualiza SQL Server, puede producirse un error en el proceso de instalación y recibe varios mensajes de error, como se indica en las secciones siguientes.

  • Escenario 1: Para una nueva instalación, se produce un error en el programa de instalación y recibe el siguiente mensaje de error:

    Acceso denegado Además, es posible que observe mensajes de error similares a los siguientes en el archivo Detail.txt: 2009-01-02 13:00:17 SQLEngine: --SqlServerServiceSCM: Esperar a que se cree el evento nt 'Global\sqlserverRecComplete$NIIT' 2009-01-02 13:03:03 00:20 SQLEngine: --SqlServerServiceSCM: esperando que el evento nt 'Global\sqlserverRecComplete$NIIT' o el controlador de proceso sql se señalen 2009-01-02 13:00:20 Slp: Error en la acción de configuración de la característica SQL_Engine_Core_Inst durante el tiempo ConfigRC y el escenario ConfigRC. 2009-01-02 13:00:20 Slp: Acceso denegado 2009-01-02 13:00:20 Slp: Error en la acción de configuración para la característica SQL_Engine_Core_Inst durante el tiempo ConfigRC y el escenario 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, Acceso int32, booleano 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-0 2 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 2 actionData, PublicConfigurationBase spcb) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary 2 actionData, PublicConfigurationBase spcbCurrent) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary'2 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: Origen: Sistema. 2009-01-02 13:00:20 Slp: Mensaje: Acceso denegado.

  • Escenario 2: las actualizaciones a SQL Server 2008 mostrarán el siguiente mensaje de error en la Engine_SqlEngineHealthCheck regla:

    Nombre de la regla:Engine_SqlEngineHealthCheck descripción de la regla: comprueba si el SQL Server se puede reiniciar; o para una instancia agrupada, si el SQL Server está en línea. Resultado: mensaje de error/acción correctiva: no SQL Server se puede reiniciar el servicio de correo electrónico; o para una instancia agrupada, el SQL Server no está en línea Además, es posible que observe mensajes de error similares a los siguientes en el archivo Detail.txt 2009-05-27 17:50:20 SQLEngine: : Punto de control del motor de comprobación 'GetSqlServerProcessHandle_1' 2009-05-27 17:50:20 SQLEngine: --SqlServerServiceSCM: Esperar que el evento nt 'Global\sqlserverRecComplete$SQL10' sea created 2009-05-27 17:50:22 SQLEngine: --SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$SQL10' or sql process handle to be signaled 2009-05-27 17:50:22 SQLEngine: --FacetSqlEngineHealthCheck: Engine_SqlEngineHealthCheck: Error: Access is denied

  • Escenario3: Se produce un error en una nueva instalación de SQL Server 2012 o SQL Server 2008 R2

    Verá el siguiente mensaje de error al intentar instalar una nueva instancia de SQL Server 2012 o SQL Server 2008 R2:

    Error en la regla "Privilegios de cuenta de instalación". La cuenta que ejecuta el programa de instalación de SQL Server no tiene uno o todos los derechos siguientes: el derecho para hacer una copia de seguridad de archivos y directorios, el derecho a administrar la auditoría, el registro de seguridad y el derecho a depurar programas. Para continuar, use una cuenta con ambos derechos.

  • Escenario 4: se produce un error al instalar SQL Server 2012 o una instancia posterior cuando se especifica un recurso compartido de red (ruta de acceso UNC) para la ubicación del directorio de copia de seguridad. Cuando se produce este problema, recibe el siguiente mensaje de error:

    SQL Server cuenta de instalación no tiene el privilegio SeSecurityPrivilege en el servidor de archivos especificado en la ruta de <UNC backup location> acceso. Este privilegio es necesario en la acción de configuración de seguridad de carpetas SQL Server programa de instalación. Para conceder este privilegio, use la consola de directiva de seguridad local en este servidor de archivos para agregar una cuenta de configuración SQL Server la directiva "Administrar registro de seguridad y auditoría". Esta configuración está disponible en la sección "Asignaciones de derechos de usuario" en Directivas locales en la consola de directiva de seguridad local.

    Nota

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

Causa

Este comportamiento es una característica del diseño de la aplicación. Además de agregar la cuenta de usuario que ejecuta el programa de instalación como administrador local, la cuenta de usuario del programa de instalación requiere los siguientes derechos de usuario predeterminados para que la instalación se complete correctamente.

Nombre para mostrar del objeto de directiva local Derecho de usuario
Archivos y directorios de copia de seguridad SeBackupPrivilege
Depurar programas SeDebugPrivilege
Administrar el registro de auditoría y seguridad SeSecurityPrivilege

Nota

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

Además, si se usa el recurso compartido de archivos SMB como opción de almacenamiento para el directorio de datos o cualquier otro directorio (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), se requieren los siguientes permisos adicionales para la cuenta de instalación en el servidor de archivos SMB, tal como se documenta en el siguiente artículo de MSDN: Instalar SQL Server con almacenamiento compartido de archivosSMB

Carpeta de recursos compartidos de red SMB CONTROL TOTAL SQL del programa de instalación
Carpeta de recursos compartidos de red SMB CONTROL TOTAL SQL Server y SQL Server servicio de agente
Servidor de archivos SMB SeSecurityPrivilege SQL del programa de instalación

Solución

Para agregar los derechos a la cuenta de administrador local, siga estos pasos:

  1. Inicie sesión en el equipo como un usuario que tenga credenciales administrativas.
  2. Haga clic en Inicio, en Ejecutar, escriba Control admintools y, a continuación, haga clic en Aceptar.
  3. Haga doble clic en Directiva de seguridad local.
  4. En el cuadro de diálogo Configuración de seguridad local, haga clic en Directivas locales, haga doble clic en 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, haga clic en Agregar usuario o grupo.
  6. En el cuadro de diálogo Seleccionar usuario o grupos, escriba la cuenta de usuario que se usa para la instalación y, a continuación, haga clic en Aceptar dos veces.
  7. Repita el procedimiento para las otras dos directivas que se mencionan en la sección Causa.
  8. En el menú Archivo, haga clic en Salir para cerrar el cuadro de diálogo Configuración de seguridad local.

Más información

  • Para comprobar la lista de privilegios que están asociados actualmente a la cuenta que se usa para la instalación, puede usar la herramienta AccessChk.exe configuración. Para descargar esta herramienta, vea 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
    
  • Configurar permisos y cuentas de servicio de Windows

  • Preguntas más frecuentes

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

      Este permiso es necesario para recuperar 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. Esto también establece las ACL si faltan permisos para la cuenta SQL Service para que pueda realizar una copia de seguridad en el directorio. El programa de instalación realiza estas comprobaciones para el directorio de copia de seguridad predeterminado de modo que, si la copia de seguridad se realiza en la instalación predeterminada de la publicación de directorios de copia de seguridad, el usuario no encuentre ningún error o problema (debido a la falta de permisos) al realizar una copia de seguridad en el directorio predeterminado.

      Nota

      SeSecurityPrivilege es necesario para cambiar las ACL get/set de los directorios y subcarpetas. Este es el caso porque incluso los usuarios que tienen permisos DE CONTROL TOTAL en los directorios no tienen permisos para obtener/establecer información de propietario y auditoría del directorio.

    • ¿Por qué se produce el error descrito en el escenario 4 en SQL Server 2012 y versiones posteriores de SQL Server?

      En SQL Server 2012 y versiones posteriores, Microsoft empezó a admitir archivos de registro y datos en el recurso compartido de archivos SMB. Como parte de esta mejora, la experiencia de configuración se mejoró aún más para ajustar las comprobaciones para que los clientes no se encuentren con errores o problemas debido a la falta de permisos después de la instalación. En versiones anteriores SQL Server 2012, los clientes aún pueden configurar la ruta de acceso del recurso compartido de red para el directorio de copia de seguridad cuando la cuenta de servicio de SQL no tiene permisos para realizar la copia de seguridad. Sin embargo, se producirá un error después de la instalación en esta situación. Estos escenarios ahora se impiden al iniciar la comprobación SQL configuración de 2012 en un recurso compartido de red.