共用方式為


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 安裝期間執行之資料庫升級腳本的詳細資訊,請參閱 針對套用更新時的升級腳本失敗進行疑難解答。

解決方法

若要解決此問題,請執行下列步驟:

  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