SQL Server升级失败并返回错误 15151
本文可帮助你排查安装累积更新 (CU) 或 Service Pack (SP) for Microsoft SQL Server 时发生的错误 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 安装期间运行的数据库升级脚本的详细信息,请参阅 排查应用更新时升级脚本失败的问题。
解决方案
要解决这个问题,请按照下列步骤操作:
使用跟踪标志 902 启动SQL Server。
在服务器上重新创建登录名:
CREATE LOGIN [##MS_SSISServerCleanupJobLogin##] WITH PASSWORD = N'<password>', DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english], CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF;
切换到
SSISDB
数据库,并将现有用户映射到新创建的登录名:USE SSISDB GO ALTER USER [##MS_SSISServerCleanupJobUser##] WITH LOGIN =[##MS_SSISServerCleanupJobLogin##]
在某些情况下,数据库用户信息也可能丢失。 在这种情况下,请在数据库中重新创建用户
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