Delen via


Upgrade van SQL Server mislukt als principals op basis van certificaten eigenaar zijn van gebruikersobjecten

Dit artikel helpt u bij het oplossen van een probleem waarbij een cumulatieve update (CU) of servicepack (SP) voor SQL Server fout 574 rapporteert wanneer u databaseupgradescripts uitvoert.

Symptomen

Wanneer u een CU of SP toepast voor SQL Server, retourneert het installatieprogramma het volgende foutbericht:

Wachten op herstelinvoer van database-engine is mislukt. Controleer het SQL Server-foutenlogboek voor mogelijke oorzaken.

Daarnaast kunnen de volgende foutvermeldingen worden geregistreerd in het FOUTENlogboek van SQL Server, samen met fouten 912 en 3417:

  • 15136 The database principal is set as the execution context of one or more procedures, functions, or event notifications and cannot be dropped.
  • 15138 The database principal owns a %S_MSG in the database, and cannot be dropped.
  • 15141 The server principal owns one or more %S_MSG(s) and cannot be dropped.
  • 15154 The database principal owns an %S_MSG and cannot be dropped.
  • 15155 The server principal owns a %S_MSG and cannot be dropped.
  • 15183 The database principal owns objects in the database and cannot be dropped.
  • 15184 The database principal owns data types in the database and cannot be dropped.
  • 15186 The server principal is set as the execution context of a trigger or event notification and cannot be dropped.
  • 15284 The database principal has granted or denied permissions to objects in the database and cannot be dropped.
  • 15421 The database principal owns a database role and cannot be dropped.
  • 27226 The database principal has granted or denied permissions to catalog objects in the database and cannot be dropped.
  • 33015 The database principal is referenced by a %S_MSG in the database, and cannot be dropped.
Error: 912, Severity: 21, State: 2.
Script level upgrade for database 'master' failed because upgrade step 'SSIS_hotfix_install.sql' encountered error 945, state 2, 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.
Error: 3417, Severity: 21, State: 3.
Cannot recover the master database. SQL Server is unable to run. 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.
SQL Server shutdown has been initiated

Oorzaak

Server-principals die tussen dubbele hashmarkeringen (##) staan, worden gemaakt op basis van certificaten wanneer SQL Server is geïnstalleerd. Deze principals moeten worden behandeld als door het systeem gemaakte principals. Ze mogen niet worden toegewezen aan database-principals die eigenaar zijn van gebruikersobjecten in msdb of andere databases. Wijzigingen in deze standaardconfiguratie kunnen fouten veroorzaken wanneer u SQL Server probeert bij te werken. Dit komt doordat de upgradescripts ervan uitgaan dat deze objecten alleen afhankelijkheden hebben die door SQL Server worden gemaakt.

Oplossing

  1. Start SQL Server met behulp van traceringsvlag 902.

  2. Voer de volgende opdracht uit om de toewijzing van server-principals aan database-principals te bepalen:

    EXEC master.sys.sp_helplogins 
    
  3. Wijzig het eigendom van de betrokken objecten in een andere gebruiker.

  4. Start SQL Server opnieuw zonder traceringsvlag 902 , zodat het upgradescript kan worden uitgevoerd.

Notitie

Hoewel een fout bij het uitvoeren van upgradescripts een van de veelvoorkomende oorzaken is van de fout 'Wachten op herstel van database-engine mislukt' is, kan dit probleem ook om andere redenen optreden. De fout betekent dat het installatieprogramma van de update de service niet kan starten of online kan brengen nadat de update is geïnstalleerd. In beide gevallen omvat het oplossen van problemen een overzicht van foutlogboeken en installatielogboeken om de oorzaak van de fout te bepalen en de juiste actie te ondernemen.

Zie ook

Problemen met upgradescripts oplossen bij het toepassen van een update