SQL Server 升級失敗,並傳回錯誤 15151
本文可協助您針對安裝 Microsoft SQL Server 累積更新 (CU) 或 Service Pack (SP) 時所發生的錯誤 15151 進行疑難解答。 執行資料庫升級文本時發生錯誤。
徵兆
當您套用 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 安裝期間執行之資料庫升級腳本的詳細資訊,請參閱 針對套用更新時的升級腳本失敗進行疑難解答。
解決方法
若要解決此問題,請執行下列步驟:
使用 追蹤旗標 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