Поделиться через


Обновление SQL Server завершается сбоем и возвращает ошибку 15151

Эта статья поможет устранить ошибку 15151, возникающую при установке накопительного обновления (CU) или пакета обновления (SP) для Microsoft SQL Server. Ошибка возникает при выполнении скриптов обновления базы данных.

Симптомы

При применении cu или SP программа установки возвращает следующее сообщение об ошибке:

Ошибка при ожидании дескриптора восстановления компонента Database Engine. Проверьте журнал ошибок SQL Server на наличие потенциальных причин.

Кроме того, в журнал ошибок 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.

Причина

Эта проблема возникает из-за того, что имя входа (субъект сервера) было удалено вручную или эти инструкции не следуют.

Дополнительные сведения о сценариях обновления базы данных, выполняемых во время установки cu или SP, см. в статье "Устранение неполадок с скриптами обновления при применении обновления".

Решение

Чтобы разрешить эту проблему, выполните следующие действия:

  1. Запустите SQL Server с флагом трассировки 902.

  2. Повторно создайте имя входа на сервере:

    CREATE LOGIN [##MS_SSISServerCleanupJobLogin##]
    WITH PASSWORD = N'<password>',
    DEFAULT_DATABASE = [master],
    DEFAULT_LANGUAGE = [us_english],
    CHECK_EXPIRATION = OFF,
    CHECK_POLICY = OFF;
    
  3. Переключитесь в SSISDB базу данных и сопоставите существующего пользователя с только что созданным именем входа:

    USE SSISDB
    GO
    ALTER USER [##MS_SSISServerCleanupJobUser##] WITH LOGIN =[##MS_SSISServerCleanupJobLogin##]
    
  4. В некоторых случаях сведения о пользователе базы данных также могут быть отсутствуют. В этом случае повторно создайте пользователя в SSISDB базе данных, а затем выполните предыдущий шаг, чтобы сопоставить пользователя с именем входа:

    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