Compartilhar via


SQL Server atualização 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 CU (atualização cumulativa) ou pacote de serviço (SP) relata o erro 2714 ao executar scripts de atualização de banco de dados.

Sintomas

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

Falha no identificador de recuperação do Mecanismo de Banco de Dados. Verifique o log de erros SQL Server em busca de possíveis causas.

Ao examinar o log de erros SQL Server, você poderá notar 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

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

Motivo

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

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

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

Resolução

  1. Pare e reinicie SQL Server usando o T902. Por exemplo, você pode executar esse comando a partir de 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 SQL Server Management Studio, conecte-se à instância SQL Server e faça backup do msdb banco de dados.

  4. Expanda Bancos de Dados Bancos> de Dados deSegurança>Bancos>>msdb>de Dados Bancos de DadosMailuserRole.

  5. Exclua o esquema chamado DatabaseMailUserRole.

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

    Depois que SQL Server começar sem o sinalizador de rastreamento 902, o script de atualização será executado novamente e o DatabaseMailUserRole esquema será recriado.

    • Se o script de atualização de SP ou CU for concluído com êxito, marcar a pasta SQL Server log de erros e inicialização para verificar.
    • Se o script de atualização falhar novamente, marcar o log de erros SQL Server para outros erros e solucionar problemas dos novos erros.

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

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

Motivo

Esse erro ocorre quando o script de atualização falha ao recriar a função de TargetServersRole 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 é dona do 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 resolve o erro, siga estas etapas:

Resolução

  1. Pare e reinicie 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 atualmente fazem parte dessa função. Você pode listar membros da função executando a seguinte consulta:

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

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

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