Compartilhar via


A atualização do SQL Server falha com o código de erro 2714 ao executar scripts de banco de dados de atualização

Este artigo resolve um problema em que uma atualização cumulativa () ou service pack (SP) relata o erro 2714 quando você executa scripts de atualização de banco de dados.

Sintomas

Quando você aplica uma ou SP, o programa de instalação pode relatar o seguinte erro:

Falha na espera pelo identificador de recuperação do Mecanismo de Banco de Dados. Verifique o log de erros do SQL Server para conhecer as causas possíveis.

Ao examinar o log de erros do SQL Server, você pode observar um dos seguintes grupos de mensagens de erro:

2021-07-27 14:08:44.31 spid6s      Error: 2714, Severity: 16, State: 6.
2021-07-27 14:08:44.31 spid6s      There is already an object named 'DatabaseMailUserRole' in the database.
2021-07-27 14:08:44.31 spid6s      Error: 2759, Severity: 16, State: 0.
2021-07-27 14:08:44.31 spid6s      CREATE SCHEMA failed due to previous errors.
2021-07-27 14:08:44.31 spid6s      Error: 912, Severity: 21, State: 2.
2021-07-27 14:08:44.31 spid6s      Script level upgrade for database 'master' failed because upgrade step 'msdb110_upgrade.sql' encountered error 2714, state 6, severity 25.
This is a serious error condition which might interfere with regular operation and the database will be taken offline.
If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting.
Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
2021-07-27 14:08:44.32 spid6s      Error: 3417, Severity: 21, State: 3.
Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.
2021-07-27 14:08:44.31 spid6s      Error: 2714, Severity: 16, State: 6.
2021-07-27 14:08:44.31 spid6s      There is already an object named 'TargetServersRole' in the database.
2021-07-27 14:08:44.31 spid6s      Error: 912, Severity: 21, State: 2.
2021-07-27 14:08:44.31 spid6s      Script level upgrade for database 'master' failed because upgrade step 'msdb110_upgrade.sql' encountered error 2714, state 6, severity 25.
This is a serious error condition which might interfere with regular operation and the database will be taken offline.
If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting.
Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
2021-07-27 14:08:44.32 spid6s      Error: 3417, Severity: 21, State: 3.
Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.

Resolver o problema de atualização com o esquema DatabaseMailUserRole

Revise as informações a seguir para resolver o problema de atualização associado ao DatabaseMailUserRole.

Causa

Esse erro ocorre se um esquema do sistema, usuário ou função estiver configurado incorretamente no msdb banco de dados.

Também ocorre quando o script de atualização falha ao recriar o DatabaseMailUserRole esquema no msdb banco de dados. Esse problema pode ocorrer quando o DatabaseMailUserRole esquema não pertence à DatabaseMailUserRole função; por exemplo, se o esquema pertence ao dbo.

Para obter mais informações sobre scripts de upgrade de banco de dados executados durante a instalação da ou SP, consulte Solucionando problemas de falhas de script de upgrade ao aplicar uma atualização.

Solução

  1. Pare e reinicie o SQL Server usando o T902. Por exemplo, você pode executar este comando em um prompt de comando:

    Para uma instância padrão:

    NET START MSSQLSERVER /T902
    

    Para instâncias nomeadas:

    NET START MSSQL$INSTANCENAME  /T902
    
  2. Faça backup do banco msdb de dados como precaução.

    BACKUP DATABASE msdb TO disk = '<backup folder>'
    
  3. Abra o SQL Server Management Studio, conecte-se à instância do SQL Server e faça backup do msdb banco de dados.

  4. Expanda Bancos de dados>Esquemas de segurança>de bancos de>dadosmsdb>>do sistema DatabaseMailuserRole.

  5. Exclua o esquema chamado DatabaseMailUserRole.

  6. Pare o SQL Server e reinicie-o sem o sinalizador de rastreamento 902.

    Depois que o SQL Server é iniciado sem o sinalizador de rastreamento 902, o script de atualização é executado novamente e o DatabaseMailUserRole esquema é recriado.

    • Se o script de atualização do SP ou for concluído com êxito, verifique o log de erros do SQL Server e a pasta de inicialização para verificar.
    • Se o script de atualização falhar novamente, verifique se há outros erros no log de erros do SQL Server e solucione os novos erros.

Resolver o problema de atualização com a função TargetServersRole

Revise as informações a seguir para resolver o problema de atualização associado ao TargetServersRole.

Causa

Esse erro ocorre quando o script de atualização falha ao recriar a TargetServersRole função de segurança no msdb banco de dados. Essa função é usada em ambientes de vários servidores. Por padrão, a TargetServersRole função de segurança pertence ao dbo, e a função possui o TargetServersRole esquema. Se você alterar inadvertidamente essa associação e a atualização que você está instalando incluir alterações em qualquer uma dessas funções, a atualização poderá falhar e retornar o erro 2714: There is already an object named 'TargetServersRole' in the database. Para resolver esse erro, siga estas etapas:

Solução

  1. Pare e reinicie o SQL Server usando o T902.

    Para uma instância padrão:

    NET START MSSQLSERVER /T902
    

    Para instâncias nomeadas:

    NET START MSSQL$INSTANCENAME /T902
    
  2. Faça backup do banco msdb de dados como precaução.

    BACKUP DATABASE msdb TO disk = '<backup folder>'
    
  3. Faça uma lista de usuários (se houver) que fazem parte dessa função no momento. Você pode listar membros da função executando a seguinte consulta:

    EXEC msdb.dbo.sp_helprolemember 'TargetServersRole'
    
  4. Descarte a TargetServersRole função usando a seguinte instrução:

    EXEC msdb.dbo.sp_droprole @rolename = N'TargetServersRole'
    
  5. Para verificar se o problema foi resolvido, reinicie a instância do SQL Server sem usar o sinalizador 902de rastreamento.

  6. Adicione novamente os usuários da etapa 3 ao TargetServersRole.