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
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
Faça backup do banco
msdb
de dados como precaução.BACKUP DATABASE msdb TO disk = '<backup folder>'
Abra SQL Server Management Studio, conecte-se à instância SQL Server e faça backup do
msdb
banco de dados.Expanda Bancos de Dados Bancos> de Dados deSegurança>Bancos>>
msdb
>de Dados Bancos de DadosMailuserRole.Exclua o esquema chamado
DatabaseMailUserRole
.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
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
Faça backup do banco
msdb
de dados como precaução.BACKUP DATABASE msdb TO disk = '<backup folder>'
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'
Solte a
TargetServersRole
função usando a seguinte instrução:EXEC msdb.dbo.sp_droprole @rolename = N'TargetServersRole'
Para marcar se o problema está resolvido, reinicie a instância SQL Server sem usar o sinalizador
902
de rastreamento .Adicione novamente os usuários da etapa 3 a
TargetServersRole
.