Udostępnij za pomocą


Uaktualnianie programu SQL Server kończy się niepowodzeniem z kodem błędu 2714 podczas wykonywania skryptów bazy danych aktualizacji

W tym artykule rozwiązano problem polegający na tym, że aktualizacja zbiorcza (CU) lub dodatek Service Pack (SP) zgłasza błąd 2714 podczas uruchamiania skryptów uaktualniania bazy danych.

Symptomy

Po zastosowaniu aktualizacji CU lub SP program instalacyjny może zgłosić następujący błąd:

Oczekiwanie na dojście odzyskiwania dla aparatu bazy danych nie powiodło się. Sprawdź dziennik błędów programu SQL Server pod kątem potencjalnych przyczyn.

Podczas przeglądania dziennika błędów programu SQL Server można zauważyć jedną z następujących grup komunikatów o błędach:

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.

Rozwiązywanie problemu z uaktualnieniem ze schematem DatabaseMailUserRole

Zapoznaj się z poniższymi informacjami, aby rozwiązać problem z uaktualnieniem skojarzonym z programem DatabaseMailUserRole.

Przyczyna

Ten błąd występuje, jeśli schemat systemowy, użytkownik lub rola jest nieprawidłowo skonfigurowana w msdb bazie danych.

Występuje również wtedy, gdy skrypt uaktualniania nie może odtworzyć schematu DatabaseMailUserRole msdb w bazie danych. Ten problem może wystąpić, gdy DatabaseMailUserRole schemat nie jest własnością DatabaseMailUserRole roli, na przykład jeśli schemat jest własnością dbo.

Aby uzyskać więcej informacji na temat skryptów uaktualniania bazy danych wykonywanych podczas instalacji aktualizacji AKTUALIZACJI lub SP, zobacz Rozwiązywanie problemów z błędami skryptów uaktualniania podczas stosowania aktualizacji.

Rozwiązanie

  1. Zatrzymaj i uruchom ponownie program SQL Server przy użyciu języka T902. Możesz na przykład uruchomić to polecenie w wierszu polecenia:

    W przypadku wystąpienia domyślnego:

    NET START MSSQLSERVER /T902
    

    W przypadku nazwanych wystąpień:

    NET START MSSQL$INSTANCENAME  /T902
    
  2. msdb Utwórz kopię zapasową bazy danych jako środek ostrożności.

    BACKUP DATABASE msdb TO disk = '<backup folder>'
    
  3. Otwórz program SQL Server Management Studio, połącz się z wystąpieniem programu SQL Server i wykonaj kopię zapasową msdb bazy danych.

  4. Rozwiń węzeł Bazy danych Systemowe bazy danych>>>msdbSchematy zabezpieczeń>>DatabaseMailuserRole.

  5. Usuń schemat o nazwie DatabaseMailUserRole.

  6. Zatrzymaj program SQL Server i uruchom go ponownie bez flagi śledzenia 902.

    Po uruchomieniu programu SQL Server bez flagi śledzenia 902 skrypt uaktualniania zostanie ponownie wykonany, a DatabaseMailUserRole schemat zostanie ponownie utworzony.

    • Jeśli skrypt uaktualniania SP lub CU zakończy się pomyślnie, sprawdź dziennik błędów programu SQL Server i folder bootstrap, aby sprawdzić.
    • Jeśli skrypt uaktualniania nie powiedzie się ponownie, sprawdź dziennik błędów programu SQL Server pod kątem innych błędów i rozwiąż problemy z nowymi błędami.

Rozwiązywanie problemu z uaktualnieniem roli TargetServersRole

Zapoznaj się z poniższymi informacjami, aby rozwiązać problem z uaktualnieniem skojarzonym z programem TargetServersRole.

Przyczyna

Ten błąd występuje, gdy skrypt uaktualniania nie może ponownie utworzyć TargetServersRole roli zabezpieczeń w msdb bazie danych. Ta rola jest używana w środowiskach z wieloma serwerami. Domyślnie TargetServersRole rola zabezpieczeń jest własnością dboelementu , a rola jest właścicielem schematu TargetServersRole . Jeśli przypadkowo zmienisz to skojarzenie, a instalowana aktualizacja zawiera zmiany w jednej z tych ról, uaktualnienie może zakończyć się niepowodzeniem i zwróceniem błędu 2714: There is already an object named 'TargetServersRole' in the database. Aby rozwiązać ten problem, wykonaj następujące kroki:

Rozwiązanie

  1. Zatrzymaj i uruchom ponownie program SQL Server przy użyciu języka T902.

    W przypadku wystąpienia domyślnego:

    NET START MSSQLSERVER /T902
    

    W przypadku nazwanych wystąpień:

    NET START MSSQL$INSTANCENAME /T902
    
  2. msdb Utwórz kopię zapasową bazy danych jako środek ostrożności.

    BACKUP DATABASE msdb TO disk = '<backup folder>'
    
  3. Utwórz listę użytkowników (jeśli istnieją), którzy są obecnie częścią tej roli. Możesz wyświetlić listę członków roli, uruchamiając następujące zapytanie:

    EXEC msdb.dbo.sp_helprolemember 'TargetServersRole'
    
  4. Upuść TargetServersRole rolę, używając następującej instrukcji:

    EXEC msdb.dbo.sp_droprole @rolename = N'TargetServersRole'
    
  5. Aby sprawdzić, czy problem został rozwiązany, uruchom ponownie wystąpienie programu SQL Server bez użycia flagi 902śledzenia .

  6. Dodaj ponownie użytkowników z kroku 3 do TargetServersRole.