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:
- Inicie sesión como administrador.
- Seleccione Iniciar>ejecución, escriba Control admintools y, a continuación, seleccione Aceptar.
- Haga doble clic en Directiva de seguridad local.
- 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.
- En el cuadro de diálogo Propiedades de archivos y directorios de copia de seguridad, seleccione Agregar usuario o grupo.
- 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 .
- 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.