Partager via


La mise à niveau de SQL Server échoue et retourne l’erreur 15151

Cet article vous aide à résoudre l’erreur 15151 qui se produit lorsque vous installez une mise à jour cumulative (CU) ou un service pack (SP) pour Microsoft SQL Server. L’erreur se produit lorsque des scripts de mise à niveau de base de données sont exécutés.

Symptômes

Lorsque vous appliquez une cu ou un fournisseur de services, le programme d’installation retourne le message d’erreur suivant :

Échec de l’attente du handle de récupération du moteur de base de données. Pour connaître les causes potentielles, consultez le journal des erreurs de SQL Server.

En outre, l’entrée d’erreur suivante peut être consignée dans le journal des erreurs 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.

Cause

Ce problème se produit parce que la connexion (principal du serveur) a été supprimée manuellement ou que ces instructions ne sont pas suivies.

Pour plus d’informations sur les scripts de mise à niveau de base de données qui s’exécutent pendant l’installation de la mise à niveau de la mise à jour, consultez Résoudre les problèmes de script de mise à niveau lors de l’application d’une mise à jour.

Résolution

Pour résoudre ce problème, procédez comme suit :

  1. Démarrez SQL Server avec l’indicateur de trace 902.

  2. Recréez la connexion sur le serveur :

    CREATE LOGIN [##MS_SSISServerCleanupJobLogin##]
    WITH PASSWORD = N'<password>',
    DEFAULT_DATABASE = [master],
    DEFAULT_LANGUAGE = [us_english],
    CHECK_EXPIRATION = OFF,
    CHECK_POLICY = OFF;
    
  3. Basculez vers la SSISDB base de données et mappez l’utilisateur existant à la connexion nouvellement créée :

    USE SSISDB
    GO
    ALTER USER [##MS_SSISServerCleanupJobUser##] WITH LOGIN =[##MS_SSISServerCleanupJobLogin##]
    
  4. Dans certains cas, les informations utilisateur de la base de données peuvent également être manquantes. Dans ce cas, recréez l’utilisateur dans la SSISDB base de données, puis réexécutez l’étape précédente pour mapper l’utilisateur à la connexion :

    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