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:
Avviare SQL Server con il flag di traccia 902.
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;
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##]
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