A instalação do SQL Server falha depois que os direitos de usuário padrão são removidos
Este artigo ajuda a resolver um problema que ocorre quando você instala ou atualiza o Microsoft SQL Server depois de reforçar a segurança.
Aplica-se a: SQL Server
Sintomas
Considere o cenário em que você está executando o Microsoft SQL Server no Windows. Para aumentar a segurança, você remove alguns direitos de usuário padrão do grupo de administradores locais. Para configurar o SQL Server no sistema, adicione a conta de instalação ao grupo de administradores locais.
Nesse cenário, se você tentar instalar ou atualizar o SQL Server, o processo de instalação falhará e você poderá receber uma mensagem de erro semelhante a uma das mensagens listadas a seguir:
Cenário 1: Se uma nova instalação falhar, você receberá a seguinte mensagem de erro:
Access is denied
Você também pode receber mensagens de erro semelhantes às seguintes no arquivo 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.
Cenário 2: Se uma nova instalação do Microsoft SQL Server 2012 ou do Microsoft SQL Server 2008 R2 falhar, você receberá uma das seguintes mensagens de erro:
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.
Cenário 3: se a instalação do SQL Server 2012 ou de uma versão posterior falhar quando você especificar um compartilhamento de rede (caminho UNC) para o local do diretório de backup, receberá a seguinte mensagem de erro:
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.
Observação
Esse problema ocorre porque a conta de instalação do SQL Server não tem as
SeSecurityPrivilege
permissões no servidor de arquivos que hospeda o compartilhamento de rede.
Causa
Se você estiver executando a instalação como administrador local, precisará dos seguintes direitos de usuário para que a instalação seja executada com êxito:
Nome de exibição do Objeto de Diretiva de Grupo Local | Direito do usuário |
---|---|
Arquivos e diretórios de backup | SeBackupPrivilege |
Programas de depuração | SeDebugPrivilege |
Gerenciar a auditoria e o log de segurança | SeSecurityPrivilege |
Observação
Para obter mais informações sobre as permissões necessárias para instalar o SQL Server, consulte a seção "Pré-requisitos" nos seguintes artigos:
Se uma opção de armazenamento para diretório de dados ou outros diretórios (diretório de banco de dados do usuário, diretório de log do banco de dados do usuário, diretório TempDB, diretório de log do TempDB ou diretório de backup) usar o compartilhamento de arquivos SMB, a conta de instalação exigirá as seguintes permissões adicionais no servidor de arquivos SMB, conforme descrito em Instalar o SQL Server com o armazenamento de compartilhamento de arquivos SMB.
Pasta de compartilhamento de rede SMB | CONTROLE TOTAL | Conta de instalação do SQL |
---|---|---|
Pasta de compartilhamento de rede SMB | CONTROLE TOTAL | Conta de serviço do SQL Server e do SQL Server Agent |
Servidor de arquivos SMB | SeSecurityPrivilege |
Conta de instalação do SQL |
Solução
Para adicionar os direitos à conta de configuração, siga estas etapas:
- Faça logon como administrador.
- Selecione Iniciar>Execução, digite Control admintools e selecione OK.
- Clique duas vezes em Política de Segurança Local.
- Na caixa de diálogo Configurações de Segurança Local, selecione Diretivas Locais, abra Atribuição de Direitos de Usuário e clique duas vezes em Arquivos e Diretórios de Backup.
- Na caixa de diálogo Propriedades de Arquivos e Diretórios de Backup , selecione Adicionar Usuário ou Grupo.
- Na caixa de diálogo Selecionar Usuário ou Grupos , insira a conta de usuário que você deseja usar para a instalação e selecione OK duas vezes.
Observação
Para adicionar a conta de usuário para as políticas Depurar Programas e Gerenciar auditoria e log de segurança, execute as etapas 1 a 6 .
- No menu Arquivo, abra a caixa de diálogo Configurações de Segurança Local e selecione Sair para fechar.
Perguntas frequentes (FAQs)
Por que o servidor de arquivos é SeSecurityPrivilege
necessário para o diretório de backup no compartilhamento UNC?
Essa permissão é necessária para recuperar ACLs (Listas de Controle de Acesso) no diretório de backup padrão para garantir que a conta de serviço do SQL Server tenha permissões completas na pasta. A conta de serviço também define as ACLs se as permissões estiverem ausentes para a conta de serviço SQL para que um backup do diretório possa ser executado. O programa de instalação executa essas verificações para o diretório de backup padrão para que, se um backup for executado após a instalação, você não experimente um erro (devido à falta de permissões).
Observação
SeSecurityPrivilege
é necessário para alterar o get/set ACLs
dos diretórios e subpastas. Isso é verdadeiro mesmo que os usuários que têm permissões FULL CONTROL nos diretórios não tenham permissões e get/set OWNER
auditem informações do diretório.
Por que o erro descrito no cenário 3 ocorre apenas no Microsoft SQL Server 2012 e versões posteriores?
A partir do SQL Server 2012, a Microsoft fornece suporte para arquivos de dados e log no compartilhamento de arquivos SMB. Como parte dessa melhoria, a experiência de configuração é aprimorada ainda mais para reforçar as verificações de segurança para que os clientes não encontrem erros ou problemas devido a permissões insuficientes após a instalação. Nas versões anteriores ao SQL Server 2012, os usuários ainda podem configurar o caminho de compartilhamento de rede para o diretório de backup se a conta do Serviço SQL não tiver permissões para executar um backup. No entanto, esses usuários experimentarão um erro pós-instalação nessa situação. Esses cenários agora são impedidos quando você inicia a verificação de instalação do SQL 2012 em um compartilhamento de rede.
Mais informações
Para verificar a lista de privilégios atualmente associados à conta de instalação, use a ferramenta AccessChk.exe . Para baixar essa ferramenta, consulte AccessChk v6.13.
Uso:
accesschk.exe- a \<setup account> *
Por exemplo:
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 obter mais informações, consulte Configurar contas de serviço e permissões do Windows.