SQL Server-uppgraderingen misslyckas med felkoden 2714 vid körning av uppdateringsdatabasskript

Den här artikeln löser ett problem där en kumulativ uppdatering (CU) eller Service Pack (SP) rapporterar fel 2714 när du kör databasuppgraderingsskript.

Symptom

När du tillämpar en CU eller SP kan installationsprogrammet rapportera följande fel:

Väntan på databasmotorns återställningshandtag misslyckades. Mer information om orsaker finns i SQL Server-felloggen.

När du granskar SQL Server-felloggen kanske du ser något av följande felmeddelanden:

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.

Lösa uppgraderingsproblem med DatabaseMailUserRole-schemat

Läs följande information för att lösa uppgraderingsproblemet DatabaseMailUserRolesom är associerat med .

Orsak

Det här felet uppstår om ett systemschema, en användare eller roll är felkonfigurerat i msdb databasen.

Det inträffar också när uppgraderingsskriptet inte kan återskapa DatabaseMailUserRole schemat i msdb databasen. Det här problemet kan inträffa när DatabaseMailUserRole schemat inte ägs av DatabaseMailUserRole rollen, till exempel om schemat ägs av dbo.

Mer information om skript för databasuppgradering som körs under CU- eller SP-installationen finns i Felsöka fel med uppgraderingsskript vid tillämpning av en uppdatering.

Åtgärd

  1. Stoppa och starta om SQL Server med hjälp av T902. Du kan till exempel köra det här kommandot från en kommandotolk:

    För en standardinstans:

    NET START MSSQLSERVER /T902
    

    För namngivna instanser:

    NET START MSSQL$INSTANCENAME  /T902
    
  2. Säkerhetskopiera databasen msdb som en försiktighetsåtgärd.

    BACKUP DATABASE msdb TO disk = '<backup folder>'
    
  3. Öppna SQL Server Management Studio, anslut till SQL Server-instansen msdb och säkerhetskopiera databasen.

  4. Expandera Databases>System Databases>>msdbSecurity>Schemas>DatabaseMailuserRole.

  5. Ta bort schemat med namnet DatabaseMailUserRole.

  6. Stoppa SQL Server och starta om den utan spårningsflaggan 902.

    När SQL Server startar utan spårningsflagga 902 körs uppgraderingsskriptet igen och DatabaseMailUserRole schemat återskapas.

    • Om SP- eller CU-uppgraderingsskriptet har slutförts kontrollerar du SQL Server-felloggen och bootstrap-mappen för att verifiera.
    • Om uppgraderingsskriptet misslyckas igen kan du söka efter andra fel i SQL Server-felloggen och felsöka de nya felen.

Lösa uppgraderingsproblem med TargetServersRole-rollen

Läs följande information för att lösa uppgraderingsproblemet TargetServersRolesom är associerat med .

Orsak

Det här felet uppstår när uppgraderingsskriptet inte återskapar TargetServersRole säkerhetsrollen msdb i databasen. Den här rollen används i miljöer med flera servrar. Som standard ägs säkerhetsrollen TargetServersRole dboav och rollen äger TargetServersRole schemat. Om du oavsiktligt ändrar den här associationen och uppdateringen som du installerar innehåller ändringar i någon av dessa roller kan uppgraderingen misslyckas och returnera felet 2714: There is already an object named 'TargetServersRole' in the database. Lös problemet genom att följa dessa anvisningar:

Åtgärd

  1. Stoppa och starta om SQL Server med hjälp av T902.

    För en standardinstans:

    NET START MSSQLSERVER /T902
    

    För namngivna instanser:

    NET START MSSQL$INSTANCENAME /T902
    
  2. Säkerhetskopiera databasen msdb som en försiktighetsåtgärd.

    BACKUP DATABASE msdb TO disk = '<backup folder>'
    
  3. Skapa en lista över användare (om sådana finns) som för närvarande ingår i den här rollen. Du kan lista medlemmar i rollen genom att köra följande fråga:

    EXEC msdb.dbo.sp_helprolemember 'TargetServersRole'
    
  4. TargetServersRole Släpp rollen med hjälp av följande instruktion:

    EXEC msdb.dbo.sp_droprole @rolename = N'TargetServersRole'
    
  5. Om du vill kontrollera om problemet är löst startar du om SQL Server-instansen utan att använda spårningsflaggan 902.

  6. Lägg till användarna igen från steg 3 till TargetServersRole.