다음을 통해 공유


SQL Server 업그레이드가 실패하고 오류 15151을 반환합니다.

이 문서는 Microsoft SQL Server 대한 CU(누적 업데이트) 또는 SP(서비스 팩)를 설치할 때 발생하는 오류 15151 문제를 해결하는 데 도움이 됩니다. 이 오류는 데이터베이스 업그레이드 스크립트를 실행할 때 발생합니다.

증상

CU 또는 SP를 적용하면 설치 프로그램에서 다음 오류 메시지를 반환합니다.

데이터베이스 엔진 복구 핸들을 기다리지 못했습니다. 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. 추적 플래그 902를 사용하여 SQL Server 시작합니다.

  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