Delen via


Upgrade van SQL Server mislukt en retourneert fout 15151

Dit artikel helpt u bij het oplossen van fouten 15151 die optreden wanneer u een cumulatieve update (CU) of servicepack (SP) voor Microsoft SQL Server installeert. De fout treedt op wanneer databaseupgradescripts worden uitgevoerd.

Symptomen

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

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

Daarnaast kan de volgende foutvermelding worden vastgelegd in het SQL Server-foutenlogboek:

Error: 15151, Severity: 16, State: 1.
Cannot find the login '##MS_SSISServerCleanupJobLogin##', because it does not exist or you do not have permission.

Oorzaak

Dit probleem treedt op omdat de aanmelding (server-principal) handmatig is verwijderd of deze instructies niet worden gevolgd.

Zie Problemen met upgradescripts bij het uitvoeren van een update oplossen voor meer informatie over database-upgradescriptscripts die worden uitgevoerd tijdens de CU- of SP-installatie.

Oplossing

Volg deze stappen om het probleem op te lossen:

  1. Start SQL Server met traceringsvlag 902.

  2. Maak de aanmelding opnieuw op de server:

    CREATE LOGIN [##MS_SSISServerCleanupJobLogin##]
    WITH PASSWORD = N'<password>',
    DEFAULT_DATABASE = [master],
    DEFAULT_LANGUAGE = [us_english],
    CHECK_EXPIRATION = OFF,
    CHECK_POLICY = OFF;
    
  3. Ga naar de SSISDB database en wijs de bestaande gebruiker toe aan de zojuist gemaakte aanmelding:

    USE SSISDB
    GO
    ALTER USER [##MS_SSISServerCleanupJobUser##] WITH LOGIN =[##MS_SSISServerCleanupJobLogin##]
    
  4. In sommige gevallen ontbreken de gebruikersgegevens van de database mogelijk ook. In dit geval maakt u de gebruiker opnieuw in de SSISDB database en voert u de vorige stap opnieuw uit om de gebruiker toe te wijzen aan de aanmelding:

    USE [SSISDB]
    GO
    DROP USER [##MS_SSISServerCleanupJobUser##]
    GO
    
    CREATE USER [##MS_SSISServerCleanupJobUser##] FOR LOGIN [##MS_SSISServerCleanupJobLogin##]
    GO
    
    ALTER USER [##MS_SSISServerCleanupJobUser##] WITH DEFAULT_SCHEMA=[dbo]
    GO
    
    GRANT EXECUTE ON [internal].[cleanup_server_project_version] TO [##MS_SSISServerCleanupJobUser##]
    GO
    GRANT EXECUTE ON [internal].[cleanup_server_retention_window] TO [##MS_SSISServerCleanupJobUser##]
    GO