Compartir a través de


Error en la actualización de SQL Server con el código de error 2714 al ejecutar scripts de base de datos de actualización

En este artículo se resuelve un problema por el que una actualización acumulativa (CU) o Service Pack (SP) notifica el error 2714 al ejecutar scripts de actualización de base de datos.

Síntomas

Al aplicar una CU o SP, el programa de instalación podría notificar el siguiente error:

Error en la espera del controlador de recuperación del Motor de base de datos. Compruebe el registro de errores de SQL Server para buscar posibles causas.

Al revisar el registro de errores de SQL Server, es posible que observe uno de los siguientes grupos de mensajes de error:

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.

Resolución del problema de actualización con el esquema DatabaseMailUserRole

Revise la siguiente información para resolver el problema de actualización asociado a DatabaseMailUserRole.

Causa

Este error se produce si un esquema del sistema, un usuario o un rol están mal configurados en la msdb base de datos.

También se produce cuando el script de actualización no puede volver a crear el DatabaseMailUserRole esquema en la msdb base de datos. Este problema puede producirse cuando el DatabaseMailUserRole esquema no es propiedad del DatabaseMailUserRole rol; por ejemplo, si el esquema es propiedad dbode .

Para obtener más información sobre los scripts de actualización de base de datos que se ejecutan durante la instalación de CU o SP, consulte Solución de problemas de errores de script de actualización al aplicar una actualización.

Solución

  1. Detenga y reinicie SQL Server mediante T902. Por ejemplo, puede ejecutar este comando desde un símbolo del sistema:

    Para una instancia predeterminada:

    NET START MSSQLSERVER /T902
    

    Para las instancias con nombre:

    NET START MSSQL$INSTANCENAME  /T902
    
  2. Realice una copia de seguridad de la msdb base de datos como medida de precaución.

    BACKUP DATABASE msdb TO disk = '<backup folder>'
    
  3. Abra SQL Server Management Studio, conéctese a la instancia de SQL Server y realice una copia de seguridad de la msdb base de datos.

  4. Expanda Bases de datos Esquemas>de seguridad>de bases>de datosmsdb>>del sistema DatabaseMailuserRole.

  5. Elimine el esquema denominado DatabaseMailUserRole.

  6. Detenga SQL Server y reinícielo sin la marca de seguimiento 902.

    Después de que SQL Server se inicie sin la marca de seguimiento 902, se vuelve a ejecutar el script de actualización y se vuelve a crear el DatabaseMailUserRole esquema.

    • Si el script de actualización de SP o CU se completa correctamente, compruebe el registro de errores de SQL Server y la carpeta bootstrap para comprobarlo.
    • Si se produce un error de nuevo en el script de actualización, compruebe el registro de errores de SQL Server para ver otros errores y solucione los nuevos errores.

Resolución del problema de actualización con el rol TargetServersRole

Revise la siguiente información para resolver el problema de actualización asociado a TargetServersRole.

Causa

Este error se produce cuando el script de actualización no puede volver a crear el TargetServersRole rol de seguridad en la msdb base de datos. Este rol se usa en entornos de varios servidores. De forma predeterminada, el TargetServersRole rol de seguridad es propiedad de dboy el rol posee el TargetServersRole esquema. Si cambia accidentalmente esta asociación y la actualización que va a instalar incluye cambios en cualquiera de estos roles, la actualización podría producir un error y devolver el error 2714: There is already an object named 'TargetServersRole' in the database. Para solucionar el error, siga estos pasos:

Solución

  1. Detenga y reinicie SQL Server mediante T902.

    Para una instancia predeterminada:

    NET START MSSQLSERVER /T902
    

    Para las instancias con nombre:

    NET START MSSQL$INSTANCENAME /T902
    
  2. Realice una copia de seguridad de la msdb base de datos como medida de precaución.

    BACKUP DATABASE msdb TO disk = '<backup folder>'
    
  3. Cree una lista de usuarios (si existen) que formen parte actualmente de este rol. Puede enumerar los miembros del rol ejecutando la consulta siguiente:

    EXEC msdb.dbo.sp_helprolemember 'TargetServersRole'
    
  4. Quite el TargetServersRole rol mediante la instrucción siguiente:

    EXEC msdb.dbo.sp_droprole @rolename = N'TargetServersRole'
    
  5. Para comprobar si se ha resuelto el problema, reinicie la instancia de SQL Server sin usar la marca 902de seguimiento .

  6. Vuelva a agregar los usuarios del paso 3 a TargetServersRole.