Condividi tramite


L'aggiornamento di SQL Server ha esito negativo e restituisce l'errore 15151

Questo articolo consente di risolvere l'errore 15151 che si verifica quando si installa un aggiornamento cumulativo (CU) o service pack (SP) per Microsoft SQL Server. L'errore si verifica quando vengono eseguiti gli script di aggiornamento del database.

Sintomi

Quando si applica un CU o SP, il programma di installazione restituisce il messaggio di errore seguente:

Attesa dell'handle di recupero del Motore di database non riuscita. Controllare il log degli errori di SQL Server per individuare le possibili cause.

Inoltre, la voce di errore seguente potrebbe essere registrata nel log degli errori di SQL Server:

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

Causa

Questo problema si verifica perché l'account di accesso (entità server) è stato eliminato manualmente o queste istruzioni non sono seguite.

Per altre informazioni sugli script di aggiornamento del database eseguiti durante l'installazione di CU o SP, vedere Risolvere gli errori di script di aggiornamento durante l'applicazione di un aggiornamento.

Risoluzione

Per ovviare a questo problema, esegui la procedura seguente:

  1. Avviare SQL Server con il flag di traccia 902.

  2. Ricreare l'account di accesso nel server:

    CREATE LOGIN [##MS_SSISServerCleanupJobLogin##]
    WITH PASSWORD = N'<password>',
    DEFAULT_DATABASE = [master],
    DEFAULT_LANGUAGE = [us_english],
    CHECK_EXPIRATION = OFF,
    CHECK_POLICY = OFF;
    
  3. Passare al database ed eseguire SSISDB il mapping dell'utente esistente all'account di accesso appena creato:

    USE SSISDB
    GO
    ALTER USER [##MS_SSISServerCleanupJobUser##] WITH LOGIN =[##MS_SSISServerCleanupJobLogin##]
    
  4. In alcuni casi, le informazioni utente del database potrebbero anche essere mancanti. In questo caso, ricreare l'utente nel SSISDB database e quindi rieseguire il passaggio precedente per eseguire il mapping dell'utente all'account di accesso:

    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