SQL Server-uppgraderingen misslyckas och returnerar fel 15151

Den här artikeln hjälper dig att felsöka fel 15151 som inträffar när du installerar en kumulativ uppdatering (CU) eller Service Pack (SP) för Microsoft SQL Server. Felet uppstår när skript för databasuppgradering körs.

Symptom

När du tillämpar en CU eller SP returnerar installationsprogrammet följande felmeddelande:

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

Dessutom kan följande felpost loggas i SQL Server-felloggen:

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

Orsak

Det här problemet beror antingen på att inloggningen (serverns huvudnamn) togs bort manuellt eller att dessa instruktioner inte följs.

Mer information om databasuppgraderingsskript som körs under CU- eller SP-installationen finns i Felsöka fel med uppgraderingsskript när du tillämpar en uppdatering.

Åtgärd

Följ dessa anvisningar för att lösa problemet:

  1. Starta SQL Server med spårningsflagga 902.

  2. Återskapa inloggningen på servern:

    CREATE LOGIN [##MS_SSISServerCleanupJobLogin##]
    WITH PASSWORD = N'<password>',
    DEFAULT_DATABASE = [master],
    DEFAULT_LANGUAGE = [us_english],
    CHECK_EXPIRATION = OFF,
    CHECK_POLICY = OFF;
    
  3. Växla till SSISDB databasen och mappa den befintliga användaren till den nyligen skapade inloggningen:

    USE SSISDB
    GO
    ALTER USER [##MS_SSISServerCleanupJobUser##] WITH LOGIN =[##MS_SSISServerCleanupJobLogin##]
    
  4. I vissa fall kanske även databasanvändarinformationen saknas. I det här fallet återskapar du användaren i SSISDB databasen och kör sedan föregående steg igen för att mappa användaren till inloggningen:

    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