徵狀

本文中描述的過程僅提供緊急救濟,而不是永久修復。使用此緊急過程的客戶應使用Windows 安裝程式緩存驗證程式包驗證其 Windows 安裝程式緩存緩存,如 KB 文章2667628中的指示。 當您嘗試安裝 Microsoft SQL Server 服務包或累積更新時,可能會遇到以下錯誤訊息,這些錯誤訊息可能指示 Windows 安裝程式緩存問題。位於c:\windows_安裝程式資料夾中的 Windows 安裝程式緩存存儲使用 Windows 安裝程式技術安裝的應用程式的重要檔,不應刪除。如果安裝程式緩存已洩露,則在執行卸載、修復或更新 SQL Server 等操作之前,您可能不會立即看到問題。 安裝 SQL Server 時,Windows 安裝程式會將關鍵檔案存儲在 Windows 安裝程式緩存中(預設值為 C:\Windows_安裝程式)。這些檔是卸載和更新應用程式所必需的。無法在電腦之間複製丟失的檔,因為它們是唯一的。 Microsoft 建議在 SQL Server 安裝時,首先使用以下文章中所述的修復過程來驗證當前安裝:

應使用以下命令列從原始安裝介質運行修復:

setup.exe /ACTION=REPAIR /INDICATEPROGRESS=TRUE首先修復常見的共用元件和功能,然後重複該命令以修復已安裝的實例。在修復過程中,設置對話方塊將消失。只要進度視窗不顯示錯誤,修復過程將按預期進行。如果缺少特定元件的安裝程式快取檔案,則修復過程將遇到錯誤。

原因

當 Windows 安裝程式資料庫檔案 (.msi) 或 Windows 安裝程式修補程式檔 (.msp) 從 Windows 安裝程式緩存中丟失時,可能會出現這些問題。Windows 安裝程式緩存位於以下資料夾中:

%windir%\installer使用 Windows 安裝程式安裝產品時,原始 .msi 檔案的剝離版本將存儲在 Windows 安裝程式緩存中。產品的每個更新(如修補程式、累積更新或服務包設置)也會在 Windows 安裝程式緩存中存儲相關的 .msp 或 .msi 檔案。將來對產品的任何更新(如修補程式、累積更新或服務包設置)都依賴于存儲在 Windows 安裝程式緩存中的檔中的資訊。如果沒有此資訊,新更新將無法執行所需的轉換。

解決方案

要解決這些問題,請使用以下過程之一。

過程 1.a.:使用修復缺失MSI 工具

在此過程中,您將使用 FixMissingMSI 工具標識 Windows 安裝程式緩存中缺少的 MSI 和 MSP 檔。作為附加步驟,您可以將該工具指向原始媒體位置並重新緩存丟失的檔。

你可以從GitHub存儲庫下載修復缺失MSI工具。

有關詳細資訊,請參閱 SQL設置工具套件簡介 (1) _FixMissingMSI

過程 1.b.:使用 FindSQLInstalls.vbs 腳本

要完成此過程中的步驟,必須將FixIninmisMSI資料夾中的FindSQLInstalls.vbs 腳本GitHub 存儲庫複製到嘗試更新 SQL Server 安裝的電腦上的本地資料夾。 備註FindSQLInstalls.vbs 腳本收集資訊以更正不正確包路徑。此腳本用於源位置,以確保所有 MSP 包都在 Windows 安裝程式緩存目錄中。執行腳本輸出檔案中"所需操作"行中指示的命令後,如果原始源媒體可用,將重新添加缺少的包。 要使用腳本解決這些問題,請按照以下步驟操作:

  1. 按一下此處轉到 GitHub 上的 FindSQLInstalls.vbs 原始頁。

  2. 選擇此頁上的所有內容,將其複製並粘貼到文字檔中。將文字檔另存為"查找SQLInstalls.vbs"。

  3. 打開一個提升的命令提示到您保存FindSQLInstalls.vbs檔的目錄,並運行以下命令:

    Cscript 查找SQLInstalls.vbs %電腦名稱稱%_sql_install_details.txt

  4. 在文字編輯器(如記事本)中從步驟 2 打開檔,並確定導致失敗的問題。為此,在文字檔中搜索字串模式,如下所示:

    • 不要

    • !!!

  5. 根據步驟 3 中的結果,執行所需的步驟。 備註在"示例"部分中查找有關這些步驟的詳細資訊。

  6. 重複步驟 2 到 4,直到步驟 2 中創建的文字檔不再包含引用正在更新的元件的無效路徑或缺少的檔的文本。

範例

以下示例是運行 FindSQLInstalls.vbs 腳本時生成的輸出檔案中概述的操作的條目和說明。

示例 1:缺少安裝程式檔

下面是在 Windows 安裝程式快取檔案夾中缺少 .msi 包時生成的輸出示例。

================================================================================
PRODUCT NAME   : Microsoft SQL Server 2008 Database Engine Services
================================================================================
  Product Code: {9FFAE13C-6160-4DD0-A67A-DAC5994F81BD}
  Version     : 10.2.4000.0
  Most Current Install Date: 20110211
  Target Install Location: 
  Registry Path: 
   HKEY_CLASSES_ROOT\Installer\Products\C31EAFF906160DD46AA7AD5C99F418DB\SourceList
     Package    : sql_engine_core_inst.msi
  Install Source: \x64\setup\sql_engine_core_inst_msi\
  LastUsedSource: m;1;G:\x64\setup\sql_engine_core_inst_msi\ 

"上次使用來源"行指向用於運行安裝程式的位置。 在"最後已使用源"行中,m;條目表示媒體,並指示原始源為 CD/DVD 介質。 在下面的示例中,源是磁碟機 G 中的 CD 或 DVD。如果安裝發生在資料夾或網路共用中,"LastUsedSource"行以n;條目開頭,後跟Numeric_Data_Name;條目,然後是實際路徑:

!!!! sql_engine_core_inst.msi DOES NOT exist on the path in the path G:\x64\setup\sql_engine_core_inst_msi\ !!!!
 
Action needed, re-establish the path to G:\x64\setup\sql_engine_core_inst_msi\  

"需要操作"行顯示為更新原始安裝介質的缺失檔而必須存在的完整路徑:

Installer Cache File: C:\WINDOWS\Installer\19b4d2.msi  

"安裝程式快取檔案"行確認安裝程式快取檔案的名稱:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! C:\WINDOWS\Installer\19b4d2.msi DOES NOT exist in the Installer cache. !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

輸出的以下部分建議您解決丟失的檔所需的操作:

 Action needed, recreate or re-establish path to the directory:
     G:\x64\setup\sql_engine_core_inst_msi\then rerun this script to update installer cache and results
     The path on the line above must exist at the root location to resolve
     this problem with your msi/msp file not being found or corrupted,
     In some cases you may need to manually copy the missing file or manually
     replace the problem file overwriting it is exist: 
 
     Copy "G:\x64\setup\sql_engine_core_inst_msi\sql_engine_core_inst.msi" C:\WINDOWS\Installer\19b4d2.msi
 
     Replace the existing file if prompted to do so. 
示例 2:缺少修補程式

缺少修補程式可能會導致條目類似于示例 1 中的條目。大多數時候,您會注意到引用修補程式的"Patch LastUsedSource"行中的條目,此行類似于以下內容:

Patch LastUsedSource:   n;1;c:\0ca91e857a4f12dd390f0821a3\HotFixSQL\Files\ 

此輸出指示有關修補程式安裝的以下內容:

  • 原始修補程式是通過按兩下修補程式的可執行檔安裝的。

  • 在安裝修補程式期間,修補程式的安裝程式使用了暫存檔案夾 c:\0ca91e857a4f12dd390f0821a3。

  • 要重新創建路徑,必須運行相同的可執行檔並添加以下參數:

    /x:c:\0ca91e857a4f12dd390f0821a3 備註此命令強制可執行檔將檔提取到以前缺少的位置,並重新創建使用任何缺少的檔更新 Windows 安裝程式緩存所需的結構。實際位置會有所不同,並且可能需要將單個修補程式(如服務包)提取到多個位置。每個已安裝的產品都包含一個部分,其中包含"已安裝的修補程式"的以下資訊:

    Display name:
    KB Article URL:  http://support.microsoft.com/?kbid=<value>
    Patch LastUsedSource:  

    如有必要,"KB 文章 URL"行可以説明您下載任何修補程式媒體。

過程 2:手動還原檔

要手動還原 Windows 安裝程式緩存中缺少的檔,請按照以下步驟操作:

  1. 從錯誤訊息、設置日誌檔或 Windows 安裝程式維護的登錄機碼中收集有關缺少檔的完整詳細資訊。例如,在"症狀"部分的錯誤訊息 1 中,解決問題所需的所有資訊都存在於錯誤訊息中:

    • 修補程式名稱:"適用于 SQL Server 2008 R2 (KB981355) (64 位)的修補程式 1702"

    • 修補程式使用的原始 MSP 檔:sql_engine_core_inst.msp

    • 緩存的 MSP 檔: c:\Windows_安裝程式\1fdb1aec.msp

  2. 如果沒有所有詳細資訊,請參閱"有關過程 2 的詳細資訊"部分,瞭解收集這些詳細資訊的步驟。

  3. 訪問HTTP://support.microsoft.com,並搜索與此修補程式關聯的知識庫文章。在此示例中,必須搜索 KB981355。

  4. 將此修補套裝程式下載到您的電腦。請確保下載與所需平臺對應的修補套裝程式。在此示例中,包是 SQLServer2008R2-KB981355-x64.exe。

  5. 使用以下語法提取修補套裝程式的內容:

    C:\Temp>SQLServer2008R2-KB981355-x64.exe /x C:\Temp\SQLServer2008R2-KB981355-x64\

  6. 找到原始的 msp 檔sql_engine_core_inst.msp 檔。該檔應位於以下資料夾中:

    C:\Temp\SQLServer2008R2-KB981355-x64\x64\setup\sql_engine_core_inst_msi\

  7. 將此原始 msp 檔案複製到以下 Windows 安裝程式緩存:

    %windir%\installer\

  8. 將原始 msp 檔 sql_engine_core_inst.msp 重命名為以下名稱:

    緩存的 msp 檔 1fdb1aec.msp

您可以啟動導致錯誤的更新的安裝程式,然後繼續更新過程。對於另一個元件缺少 Windows 安裝程式快取檔案或同一產品的另一個更新,可能會遇到此消息。 要獲取與 SQL Server 產品元件相關的所有缺少的 Windows 安裝程式快取檔案的清單,可以下載"更多資訊"部分中提到的 SQL Server 2008 R2 BPA 工具。 如果錯誤訊息引用缺少的 Windows 安裝程式資料庫檔案 (.msi),則不必執行步驟 2 到 4。相反,您可以直接轉到步驟 5。您必須從用於安裝產品的原始介質中查找 .msi。如果此錯誤訊息是為sql_engine_core_inst.msi 生成的,則必須在以下資料夾結構下從設置介質中查找此檔:

\x64\setup\sql_engine_core_inst_msi\其他步驟相同。

有關程式 2 的詳細資訊

如何查找缺少的 .msp 檔的修補套裝程式和產品詳細資訊

產品的不同版本會為此問題生成不同的錯誤訊息。對於從 Microsoft SQL Server 2008 SP1 開始的更新安裝程式,將顯示"症狀"部分中提到的錯誤訊息。對於其他更新,您會收到錯誤訊息,這些錯誤訊息可能無法清楚地指定 Windows 安裝程式緩存中缺少哪個修補程式檔和特定更新詳細資訊。對於這些錯誤訊息,安裝日誌檔將包含有關缺少的 Windows 安裝程式快取檔案的資訊。示例設置日誌類似于以下內容:

MSI (s) (FC:F8) [13:48:58:649]: Opening existing patch 'C:\WINDOWS\Installer\145258.msp'.
MSI (s) (FC:F8) [13:48:58:649]: Couldn't find local patch 'C:\WINDOWS\Installer\145258.msp'. Looking for it at its source.
MSI (s) (FC:F8) [13:48:58:649]: Resolving Patch source.
MSI (s) (FC:F8) [13:48:58:649]: Note: 1: 2203 2: D:\cda162709d239766830bae5ce12b\HotFixSQL\Files\sqlrun_sql.msp 3: -2147287037 
MSI (s) (FC:F8) [13:48:58:649]: SOURCEMGMT: Source is invalid due to missing/inaccessible package.
MSI (s) (FC:F8) [13:49:29:961]: Product: Microsoft SQL Server 2005 -- Installation failed.
MSI (s) (FC:F8) [13:49:29:992]: MainEngineThread is returning 1635
This patch package could not be opened.  Verify that the patch package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer patch package.
D:\SQL2K5\Servers\Setup\SqlRun_SQL.msi 

如果仔細檢查此設置日誌,它已提供有關以下修補程式使用的原始 MSP 檔的資訊:

sqlrun_sql.msp要查找有關 Windows 安裝程式緩存中缺少的 .msp 檔的詳細資訊,請按照以下步驟操作:

  1. 在以下 Windows 安裝程式修補程式註冊表子項中搜索缺少的 .msp 檔:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\

  2. 查找修補程式 GUID。

  3. 在以下 Windows 安裝程式產品註冊表子項中搜索修補程式 GUID:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\

對於示例設置日誌,有關缺少的 .msp 檔及其相應的修補程式詳細資訊的資訊存在於以下登錄機碼中: HKEY_LOCAL_MACHINE\軟體\微軟\Windows_當前版本_安裝程式_使用者資料\S-1-5-18_補丁\A3B085EA74AA7640A496636F7EF9A44 值: 0 名稱: 本地包 資料: C:\WINDOWS_安裝程式_145258.msp HKEY_LOCAL_MACHINE_軟體\微軟\Windows_當前版本\安裝程式\使用者資料\S-1-5-18_產品\1EB3A031CC585314E8A527E46EECC2_Patchs_A3B085EA74A7A7A7A44值: 6 名稱: 顯示名稱 資料:GDR 2050 用於 SQL 伺服器資料庫服務 2005 ENU (KB932555) 現在,您擁有了所有資訊點,可以啟動解決 Windows 安裝程式緩存中缺失檔的步驟。 備註如果您使用 Microsoft SQL Server 2008 服務包 3 (SP3) 或更高版本,您還可以收到有關缺少的 .msi 檔案的類似錯誤訊息。通過使用此錯誤訊息,您可以快速確定缺少哪個檔、要下載的服務包以及在哪裡可以找到下載。 有關如何獲取服務包的詳細資訊,請按一下以下文章編號以查看 Microsoft 知識庫中的文章:

2546951 SQL Server 2008 服務包 3 中修復的 Bug 清單

過程 3:從系統狀態備份還原

你可以從系統狀態備份恢復,如 缺少的Windows安裝程式快取檔案將需要電腦重建中所述。

其他相關資訊

備註以下錯誤訊息可以在事件日誌或位於以下資料夾之一的安裝程式日誌中找到,並指示您應該修復正在進一步執行的受影響的實例:

  • 對於 SQL Server 2008 和 SQL Server 2008 R2:

    C:\程式檔\微軟SQL伺服器\100_安裝引導

  • 對於 SQL Server 2012:

    C:\程式檔\微軟SQL伺服器\110_安裝引導

對於 SQL 2005(所有分支)

產品版本

缺少安裝套裝程式 (MSI) 時出現錯誤訊息

缺少安裝程式緩存包 (MSP) 時出現錯誤訊息

SQL 伺服器 2005

1636 無法安裝 Windows 安裝程式 MSI 檔

1636 無法安裝 Windows 安裝程式 MSP 檔

備註您必須查看設置日誌檔,以確定是否缺少任何快取檔案。有關如何執行此操作的詳細資訊,請訪問"解決"部分。 對於 SQL Server 2008 SP1

產品版本

缺少安裝套裝程式 (MSI) 時出現錯誤訊息

缺少安裝程式緩存包 (MSP) 時出現錯誤訊息

SQL 伺服器 2008 SP1

無錯誤訊息

標題:SQL 伺服器設置失敗。 ------------------------------ SQL 伺服器安裝遇到以下錯誤:無法打開修補程式檔。該檔是:c:\WINNT_安裝程式_檔案名.msp。錯誤代碼 0x84B20001。 ------------------------------

對於 SQL Server 2008 SP3 僅生成(CU/GDR 分支不適用)

產品版本

缺少安裝套裝程式 (MSI) 時出現錯誤訊息

缺少安裝程式緩存包 (MSP) 時出現錯誤訊息

SQL 伺服器 2008 SP3

缺少緩存的 MSI 檔"C:[Windows]安裝程式"檔案名.msi。它的原始檔案是"sql_engine_core_inst.msi",它安裝在產品'微軟SQL Server 2008資料庫引擎服務'從'網路路徑',版本'版本號',語言'ENU'。

缺少緩存的修補程式檔"C:\Windows_安裝程式_檔案名稱.msp"。此快取檔案的原始檔案是"sql_engine_core_inst.msp",可以從"SQL Server 2008 服務包 3 (KB2546951) (64 位)",版本號安裝

備註執行升級時,您將收到以下錯誤訊息: 僅適用于 SQL Server 2008 R2 SP1(CU/GDR 分支不適用)

產品版本

缺少安裝套裝程式 (MSI) 時出現錯誤訊息

缺少安裝程式緩存包 (MSP) 時出現錯誤訊息

SQL 伺服器 2008 R2 SP1

標題:SQL 伺服器設置失敗。 ------------------------------ SQL 伺服器安裝遇到以下錯誤:C:\Windows_安裝程式_檔案名.msi。 ------------------------------

缺少緩存的修補程式檔"C:\Windows_安裝程式_檔案名稱.msp"。此快取檔案的原始檔案是"sql_engine_core_inst_loc.msp",可以從"服務包 1 為 SQL Server 2008 R2 (KB2528583) (64 位)",版本號

備註執行升級時,您將收到以下錯誤訊息: 對於 SQL 伺服器 2008 R2 SP2

產品版本

缺少安裝套裝程式 (MSI) 時出現錯誤訊息

缺少安裝程式緩存包 (MSP) 時出現錯誤訊息

SQL 伺服器 2008 R2 SP1

缺少緩存的 MSI 檔"C:[Windows]安裝程式"檔案名.msi。它的原始檔案是"sql_engine_core_inst.msi",它安裝在產品'SQL Server 2008 R2 SP1資料庫引擎服務'從'網路路徑',版本'版本號',語言'語言名稱'。

缺少緩存的修補程式檔"C:\Windows_安裝程式_檔案名稱.msp"。此快取檔案的原始檔案是"sql_engine_core_inst_loc.msp",可以從"服務包 1 為 SQL Server 2008 R2 (KB2528583) (64 位)",版本號

備註執行升級時,您將收到以下錯誤訊息: 對於 CU2 之前的 SQL Server 2012 沒有丟失 MSP 或 MSI 檔的消息。但是,錯誤代碼 1714 記錄在安裝日誌中。 在摘要.txt 檔中:

元件名稱:SQL 伺服器設置支援檔 元件錯誤代碼: 1714

在詳細資訊.txt 檔中:

日期/時間Slp: Sco:檔路徑不存在 日期/時間Slp: Sco:檔路徑不存在 日期/時間Slp: 檢查點: PREINSTALL_SQLSUPPORT_CPU64_ACTION 日期/時間Slp: Sco: 嘗試創建基本登錄機碼HKEY_LOCAL_MACHINE, 電腦伺服器名稱日期/時間Slp: Sco: 嘗試打開註冊表子金鑰軟體\微軟\Windows_當前版本_安裝程式 日期/時間Slp: Sco: 嘗試獲取註冊表值安裝程式位置 日期/時間Slp: Windows 安裝程式版本 : 5.0.7601.17514 日期/時間Slp: Sco: 等待服務"伺服器"接受停止請求。 日期/時間斯普:斯科:試圖打開SC管理器 日期/時間Slp: Sco: 嘗試為服務伺服器打開服務控制碼 日期/時間Slp: 調用查詢服務狀態 WIN32 API 日期/時間Slp: Sco: 嘗試關閉服務 msiserver 的服務控制碼 日期/時間斯普:斯科:試圖關閉SC經理 日期/時間Slp:目標包:"FilePath" 日期/時間Slp: MSI 錯誤: 1714 無法刪除舊版本的 Microsoft SQL Server 2012 安裝程式(英語)。請聯繫您的技術支援小組。 日期/時間Slp:安裝包:MsiInstallproductproduct 返回結果代碼 1603。 日期/時間Slp:使用 MSI 錯誤代碼檢測重試選項: 1714 日期/時間Slp:未檢測到可重試的 MSI 返回代碼。

對於 SQL Server 2012 CU2(以及任何後續 CU 或 SP)

產品版本

缺少安裝套裝程式 (MSI) 時出現錯誤訊息

缺少安裝程式緩存包 (MSP) 時出現錯誤訊息

SQL 伺服器 2008 R2 SP1

缺少緩存的 MSI 檔"C:[Windows]安裝程式"檔案名.msi。其原始檔案是"C:\Windows_安裝程式\sql_功能名稱.msi'",它安裝的產品'微軟 SQL Server版本'從'C:\原始檔案夾',版本'版本號',語言'語言'。

缺少緩存的修補程式檔"c:\Windows_安裝程式_檔案名稱.msp"。其原始檔案是"sql_engine_core_inst.msp",它可以安裝從"Hotfix 2316為SQL伺服器2012 (KB2679368)(64位)",版本號。缺少緩存的修補程式檔 C:[Windows_安裝程式]檔案名.msp' 。其原始檔案是"C:\Windows_安裝程式\sql_功能名稱.msp'",可以從熱修復器 <熱修復號碼> 用於 SQL Server 2012 KB 編號,版本"版本號"安裝。

備註在 SQL Server 2012 中的某些條件下,RTM 媒體可能無法正確註冊。在這種情況下卸載累積更新或服務包時,安裝程式可能會提示您使用 RTM 媒體。要解決此問題,請在修補程式刪除過程中提供 RTM 媒體路徑。

有關 Windows 安裝程式資料庫 (.msi) 檔的詳細資訊,請訪問以下 Microsoft 開發人員網路 (MSDN) 網站:

安裝程式資料庫有關 Windows 安裝程式修補程式 (.msp 檔) 檔的詳細資訊,請訪問以下 MSDN 網站:

修補套裝程式有關 Windows 安裝程式緩存的內部詳細資訊的詳細資訊,請參閱以下 MSDN 博客:

Windows 安裝程式緩存有關修補過程的詳細資訊,請參閱以下 MSDN 博客:

修補的工作原理有關如何確保為正確的平臺緩存修補程式檔的詳細資訊,請參閱以下 MSDN 博客:

SQL 伺服器設置提示"已安裝的產品與安裝源不匹配"有關使用 Windows 安裝程式的任何產品為何可能會遇到此問題的詳細資訊,請參閱以下 MSDN 博客:

重建安裝程式緩存有關設置日誌檔中顯示的不同錯誤訊息集的詳細資訊的詳細資訊,請參閱以下 MSDN 博客:

第 1 部分 : SQL Server 2005 修補程式安裝失敗,錯誤"無法安裝 Windows 安裝程式 MSP 檔"有關 FindSQLInstalls.vbs.vbs.script 的詳細資訊,請參閱以下GitHub 存儲庫

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×