Partilhar via


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:

  1. Faça logon como administrador.
  2. Selecione Iniciar>Execução, digite Control admintools e selecione OK.
  3. Clique duas vezes em Política de Segurança Local.
  4. 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.
  5. Na caixa de diálogo Propriedades de Arquivos e Diretórios de Backup , selecione Adicionar Usuário ou Grupo.
  6. 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 .

  7. 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.