您目前已離線,請等候您的網際網路重新連線

如何還原遺失的 Windows 安裝程式快取檔案,並解決在 SQL Server 更新期間發生的問題

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:969052
徵狀
本文所述的程序提供只緊急浮雕] 與 [不永久修正檔。使用這個緊急的程序的客戶應該驗證使用的Windows 安裝程式快取檢查器套件中,其 Windows 安裝程式快取,依照知識庫文件中的指示 2667628.

當您嘗試安裝 Microsoft SQL Server 服務套件或累積的更新時,您可能會遇到下列錯誤訊息,,,thesemay 會指示 Windows 安裝程式快取問題。Windows 安裝程式快取位於c:\windows\installer資料夾中儲存重要應用程式檔案安裝使用 Windows 安裝程式技術,而且不應該刪除。如果安裝程式快取已遭洩露,您可能會不立即解除安裝、 修復或更新 SQL Server 的直到您執行某個動作,例如,請參閱問題。

當您安裝 SQL Server 時,Windows 安裝程式將 Windows 安裝程式快取 (預設值為 C:\Windows\Installer) 中儲存重要檔案。這些檔案都需要解除安裝,並更新應用程式。遺失的檔案無法複製電腦之間,因為它們是唯一。

Microsoft 建議的 SQL Server 安裝您先使用下列的文件,以確認您目前的安裝中所述的修復處理程序:

您應該執行修復,從原始安裝媒體中,使用下列命令列:

setup.exe /ACTION = 修復 /INDICATEPROGRESS = TRUE

首先,修復的常見的共用的元件與功能,然後重複執行的命令,以修復安裝的執行個體。在修復過程中,[設定] 對話方塊就會消失。只要進度視窗不會顯示錯誤,如預期般運作,就會進行修復程序。

注意在事件記錄檔或安裝記錄檔位於下列資料夾中,其中一項,可以以文字訊息找到下列的錯誤訊息,而它們會指示您應先修復受影響您正在進行進一步的執行個體:
  • 對於 SQL Server 2008年與 SQL Server 2008 R2 的:
    C:\Program 必要 SQL Server\100\Setup 啟動安裝程式
  • 對於 SQL Server 2012年:
    C:\Program 必要 SQL Server\110\Setup 啟動安裝程式
SQL 2005 (所有分支)
產品版本安裝程式封裝 (MSI) 遺漏時,出現錯誤訊息安裝程式快取封裝 (MSP) 遺漏時,出現錯誤訊息
SQL 2005 Server
1636 無法安裝,Windows 安裝程式的 MSI 檔案
1636 無法安裝,Windows 安裝程式的 MSP 檔案
附註您必須檢閱安裝記錄檔,來判斷是否有任何快取檔案已遺失。如需有關如何執行這項操作的詳細資訊,請前往 < 解決方案 > 一節。

SQL Server 2008 sp1
產品版本安裝程式封裝 (MSI) 遺漏時,出現錯誤訊息安裝程式快取封裝 (MSP) 遺漏時,出現錯誤訊息
SQL Server 2008 SP1沒有錯誤訊息
標題: SQL Server 安裝程式失敗。
------------------------------
SQL Server 安裝程式發現下列錯誤: 無法開啟修補檔案。檔案是: c:\WINNT\Installer\1cf506f.msp。錯誤碼 0x84B20001。
------------------------------
僅限建置的 SQL Server 2008 SP3 的 (CU/GDR 分支並非適用)
產品版本安裝程式封裝 (MSI) 遺漏時,出現錯誤訊息安裝程式快取封裝 (MSP) 遺漏時,出現錯誤訊息
SQL Server 2008 SP3
找不到快取的 MSI 檔案 'C:\Windows\Installer\2775c8.msi'。它原來的檔案是 'sql_engine_core_inst.msi',它已安裝產品 'Microsoft SQL Server 2008年資料庫引擎服務' 從 '<network path="">',版本 '10.3.5500.0','ENU' 語言。</network>
找不到快取的修補檔案"C:\Windows\Installer\19b19196.msp"。此快取檔案的原始檔是 「 sql_engine_core_inst.msp 」,可從 「 Service Pack 3 的 SQL Server 2008 (KB2546951) (64 位元) 」,版本 10.3.5500.0 安裝
注意當您執行升級時,您會收到下列錯誤訊息:
SQL Server 錯誤

對於 SQL Server 2008 R2 SP1 只 (CU/GDR 分支並非適用)
產品版本安裝程式封裝 (MSI) 遺漏時,出現錯誤訊息安裝程式快取封裝 (MSP) 遺漏時,出現錯誤訊息
SQL Server 2008 R2 SP1
標題: SQL Server 安裝程式失敗。
------------------------------
SQL Server 安裝程式發現下列錯誤: C:\Windows\Installer\932b909.msi。
------------------------------
找不到快取的修補檔案"C:\Windows\Installer\105441.msp"。此快取檔案的原始檔是 「 sql_engine_core_inst_loc.msp 」,可從 「 Service Pack 1 的 SQL Server 2008 R2 (KB2528583) (64 位元) 」 安裝,版本 10.51.2500.0。
注意當您執行升級時,您會收到下列錯誤訊息:
SQL Server 錯誤

SQL Server 2008 R2 sp2
產品版本安裝程式封裝 (MSI) 遺漏時,出現錯誤訊息安裝程式快取封裝 (MSP) 遺漏時,出現錯誤訊息
SQL Server 2008 R2 SP1
找不到快取的 MSI 檔案 'C:\Windows\Installer\932b909.msi'。它原來的檔案是 'sql_engine_core_inst.msi',它已安裝產品 'SQL Server 2008 R2 SP1 資料庫引擎服務' 從 '<network path="">',版本 '10.51.2500.0','ENU' 語言。</network>
找不到快取的修補檔案"C:\Windows\Installer\105441.msp"。此快取檔案的原始檔是 「 sql_engine_core_inst_loc.msp 」,可從 「 Service Pack 1 的 SQL Server 2008 R2 (KB2528583) (64 位元) 」 安裝,版本 10.51.2500.0。
注意當您執行升級時,您會收到下列錯誤訊息:
SQL Server 錯誤

對於 SQL Server 2012 之前 CU2
沒有任何遺失的 MSP 或 MSI 檔案的訊息。不過,安裝程式記錄檔會記錄錯誤代碼 1714年。

在 Summary.txt 檔案中:
元件名稱: SQL Server 安裝程式的支援檔案
元件錯誤代碼: 1714年

在 Detail.txt 檔案中:
<Date><Time>Slp: Sco: 檔案 'd:\2d5feb4dd893c4adee47f15661ac\1033_ENU_LP\x64\setup\sqlsupport_msi\x64\SqlSupport.msi' 不存在
<Date><Time>Slp: Sco: 檔案 'd:\2d5feb4dd893c4adee47f15661ac\1033_ENU_LP\x64\setup\sqlsupport_msi\x64\SqlSupport.msi' 不存在
<Date><Time>Slp: 檢查點: PREINSTALL_SQLSUPPORT_CPU64_ACTION
<Date><Time>Slp: Sco: 嘗試建立基底的登錄機碼的作用中計,機器<Server name="">
<Date><Time>Slp: Sco: 嘗試開啟登錄子機碼 Software\Microsoft\Windows\CurrentVersion\Installer
<Date><Time>Slp: Sco: 嘗試取得登錄值 InstallerLocation
<Date><Time>Slp: Windows 安裝程式版本: 5.0.7601.17514
<Date><Time>Slp: Sco: 等待服務 'msiserver' 接受停止要求。
<Date><Time>Slp: Sco: 嘗試開啟 SC 管理員
<Date><Time>Slp: Sco: 嘗試開啟服務控制代碼服務 msiserver
<Date><Time>Slp: 叫用 QueryServiceStatus Win32 API
<Date><Time>Slp: Sco: 嘗試關閉服務 msiserver 的服務控制代碼
<Date><Time>Slp: Sco: 嘗試關閉 SC 管理員
<Date><Time>Slp: 目標封裝:"d:\2d5feb4dd893c4adee47f15661ac\1033_ENU_LP\x64\setup\sqlsupport_msi\SqlSupport.msi"
<Date><Time>Slp: MSI 錯誤: 無法移除舊的版本的 Microsoft SQL Server 2012年安裝程式 」 (英文) 的 1714年。請連絡技術支援人員。
<Date><Time>Slp: InstallPackage: MsiInstallProduct 傳回結果碼 1603年。
<Date><Time>Slp: 使用 MSI 錯誤程式碼來偵測重試] 選項: 1714年
<Date><Time>Slp: 沒有可重試的 MSI 傳回偵測到程式碼。</Time></Date></Time></Date></Time></Date></Time></Date></Time></Date></Time></Date></Time></Date></Time></Date></Time></Date></Time></Date></Time></Date></Time></Date></Time></Date></Time></Date></Server></Time></Date></Time></Date></Time></Date></Time></Date>

SQL Server 2012 CU2 (以及任何後續 CU 或預存程序)
產品版本安裝程式封裝 (MSI) 遺漏時,出現錯誤訊息安裝程式快取封裝 (MSP) 遺漏時,出現錯誤訊息
SQL Server 2008 R2 SP1
快取的 MSI 檔案 'C:\Windows\Installer\<file_encoded_name>.msi' 遺失。它原來的檔案是 'C:\Windows\Installer\sql_<featurename>.msi '}' 和它已安裝產品' Microsoft SQL Server <version>''C:\originalfolder',從版本'<versionnumber>',語言 '<language>'。</language> </versionnumber> </version> </featurename> </file_encoded_name>
找不到快取的修補檔案"c:\Windows\Installer\1fdb1aec.msp"。它原來的檔案是"sql_engine_core_inst.msp",它可以從 「 重要修正 2316年的 SQL Server 2012 (KB2679368) (64 位元) 」,版本 11.00.2100.60.The 快取的補充程式檔案安裝"C:\Windows\Installer\<file_encoded_name>.msp' 遺失。它原來的檔案是 'C:\Windows\Installer\sql_<featurename>.msp'}',它可以從安裝' Hotfix<number>的 SQL Server 2012年<KB number="">',版本 '<versionnumber>'。</versionnumber> </KB> </number> </featurename> </file_encoded_name>
注意在 [SQL Server 2012年在某些情況下,RTM 媒體可能沒有正確註冊。當您解除安裝累積的更新或 service pack 在這些情況下,安裝程式可能會提示您 RTM 媒體。若要解決這個問題,請在補充程式移除程序期間提供 RTM 媒體路徑。
發生的原因
當 Windows Installer 資料庫檔案 (.msi) 的 Windows 安裝程式修補檔案 (.msp) 找不到或從 Windows 安裝程式快取時,可能會發生這些問題。Windows 安裝程式快取位於下列資料夾:
%windir%\installer
當使用 Windows Installer 安裝產品時,原始的.msi 檔案的移除專用符號的版本會儲存在 Windows 安裝程式快取中。每次更新的產品,例如 hotfix、 累積的更新或服務套件的安裝程式,也會將相關的.msp 或.msi 檔案儲存在 Windows 安裝程式快取。

任何未來的更新,例如 hotfix、 累積的更新或服務套件的安裝程式,產品會依賴 Windows 安裝程式快取中儲存的檔案中的資訊。沒有此資訊,新的更新程式無法執行所需的轉換。
解決方案
若要解決這些問題,請使用下列程序的其中一個。

程序 1: 使用指令碼

若要完成此程序的步驟,您必須複製 FindSQLInstalls.vbs 指令碼 從本機電腦上的資料夾您嘗試更新您的 SQL Server 安裝 < 其他資訊 > 一節。

注意FindSQLInstalls.vbs 指令碼會收集的資訊,若要修正無效的套件路徑。而且,這個指令碼以確定所有的 MSP 套件位於 Windows 安裝程式的快取目錄時,是針對來源位置。如果使用原始的來源媒體,將會重新加入任何遺漏的套件。

若要解決這些問題,使用指令碼,請依照下列步驟執行:
  1. 找出要您儲存指令碼內容的目錄。
  2. 開啟已提高權限的命令提示字元,目錄已儲存指令碼,並執行下列命令:
    Cscript FindSQLInstalls.vbs %computername%_sql_install_details.txt
  3. 在文字編輯器,例如 「 記事本 」 中的步驟 2 中開啟該檔案,並找出造成失敗的問題。若要這樣做,請搜尋字串模式,如下所示的文字檔:
    • 不這樣做
    • !!!
  4. 根據步驟 3 中的結果,採取所需的步驟。

    注意如需有關 「 範例 」 一節中的這些步驟的外觀。

  5. 重複步驟 2 到 4,直到不再包含在步驟 2 中所建立的文字檔的參考路徑無效或遺失的檔案,正在更新元件的文字。

範例

下列範例是項目和執行 FindSQLInstalls.vbs 指令碼時,會產生的輸出檔中所列出的動作的說明。

範例 1: 安裝程式檔案遺失
以下是輸出的你還缺少.msi 套件,Windows 安裝程式的快取資料夾中時,會產生範例。
================================================================================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\

"LastUsedSource"線所指到用來執行安裝程式的位置。

"LastUsedSource"排隊m;項目表示媒體,並指示原始的來源是 CD/DVD 媒體。

在下列範例中,「 來源 」 是 CD 或 DVD 磁碟機 g。如果安裝發生從檔案資料夾,或從網路共用,"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] 中的項目。大多數情況下,您會注意到在 「 補充程式 LastUsedSource"行中參照的補充程式的項目,,此行如下所示:
Patch LastUsedSource:   n;1;c:\0ca91e857a4f12dd390f0821a3\HotFixSQL\Files\

此輸出將指出下列有關補充程式安裝:
  • 原始的更新程式已安裝按兩下補充程式的可執行檔。
  • 此補充程式的安裝程式會將暫存資料夾,c:\0ca91e857a4f12dd390f0821a3,用於安裝此更新程式。
  • 若要重新建立路徑,您必須執行相同的可執行檔,並加入下列參數:
    /x:c:\0ca91e857a4f12dd390f0821a3
    注意這個命令會強制的上一個遺失的位置,將檔案解壓縮的可執行檔,如此即可重新建立所需的任何遺失的檔案來更新 Windows 安裝程式快取的結構。實際的位置而異,和單一的補充程式,例如 service pack 可能要解壓縮至多個位置。每個已安裝的產品包含區段,包含 「 已安裝的修補程式 」 的下列資訊:
    Display name:KB Article URL:  http://support.microsoft.com/?kbid=<value>Patch LastUsedSource: 

    "KB 文件 URL"線可協助您下載任何更新程式的媒體,如果這是必要的。

程序 2: 手動還原檔案

若要以手動方式還原從 Windows 安裝程式快取遺失的檔案,請依照下列步驟執行:
  1. 從錯誤訊息、 安裝記錄檔,或從由 Windows 「 安裝程式維護的登錄項目,請收集完整的詳細資訊,有關遺失的檔案。例如,在 < 徵狀 > 一節中的錯誤訊息 1,才能解決問題的所有資訊存都在於錯誤訊息:
    • PatchName:"Hotfix 1702 的 SQL Server 2008 R2 (KB981355) (64 位元)"
    • 原始的 MSP 檔案所使用的補充程式: sql_engine_core_inst.msp
    • 快取的 MSP 檔案: c:\Windows\Installer\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 安裝程式快取檔案為另一個元件或相同產品的另一個更新。

若要取得的所有 Windows 安裝程式快取檔案遺失與 SQL Server 產品元件相關的清單,您可以下載的 < 其他資訊 > 一節所述的 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 1635This 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


若要尋找遺失的.msp 檔案,Windows 安裝程式快取中的相關的詳細資訊,請依照下列步驟執行:
  1. 搜尋遺失的.msp 檔案,在下列的 Windows 安裝程式修補程式登錄子機碼:
    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\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\A3B085EA74A9A7640A496636F7EF9A44

值: 0
名稱: LocalPackage
資料: C:\WINDOWS\Installer\145258.msp

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\1EB3A031CC585314E87AA527E46EECC2\Patches\A3B085EA74A9A7640A496636F7EF9A44
值: 6
名稱: 顯示名稱
SQL Server 資料庫服務 2005 ENU (KB932555) 的資料: GDR 2050

現在,您必須啟動的步驟解決遺失的檔案,Windows 安裝程式快取中的所有資訊點。

注意如果您使用 Microsoft SQL Server 2008 Service Pack 3 (SP3) 或更新版本,您也可以接收類似的錯誤訊息,.msi 檔案遺失。藉由使用這個錯誤訊息,您可以快速判定哪個檔案遺漏,如果要下載,哪些服務套件,您可以在其中找到下載。

如需有關如何取得 service pack 的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
2546951 SQL Server 2008 Service Pack 3 中所修正的 bug 清單

其他相關資訊
如需有關 Windows 安裝程式資料庫 (.msi) 檔案的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:如需有關補充程式 (.msp 檔案) 的 Windows 安裝程式檔案的詳細資訊,請造訪下列 MSDN 網站:如需有關 Windows 安裝程式快取的內部詳細資料的詳細資訊,請參閱下列 MSDN 部落格:如需有關修補程序的詳細資訊,請參閱下列 MSDN 部落格:如需有關如何確定您快取正確的平台的補充程式檔案的詳細資訊,請參閱下列 MSDN 部落格:如需有關為何 Windows 「 安裝程式會使用任何產品可能會遇到這個問題的詳細資訊,請參閱下列 MSDN 部落格:如需有關不同組的安裝記錄檔中出現的錯誤訊息的詳細資料的詳細資訊,請參閱下列 MSDN 部落格:

如需有關產品或自動檢查這個條件,SQL Server 產品的版本和您的 SQL Server 的執行個體上的工具的詳細資訊,請參閱下表:
規則軟體規則標題規則描述針對規則進行評估的產品版本
SQL Server 2008 R2 最佳練習分析器 (SQL Server 2008 R2 BPA)安裝程式-安裝程式快取是缺少 SQL 安裝SQL Server 2008 R2 最佳練習分析器 (SQL Server 2008 R2 BPA)] 提供的規則,以偵測遺漏的安裝程式快取檔案,SQL Server 元件。SQL Server 2008 R2 BPA 支援 SQL Server 2008年和 SQL Server 2008 R2。如果您執行 BPA 工具,並發生錯誤的安裝程式-標題與安裝程式快取遺漏進行 SQL 安裝,然後再快取檔案便會遺失快取資料夾中。SQL Server 2008
SQL Server 2008 R2
SQL Server 2012年最佳練習分析器 (SQL Server 2012 BPA)安裝程式-安裝程式快取是缺少 SQL 安裝SQL Server 2012年最佳練習分析器 (SQL Server 2012 BPA)] 提供的規則,以偵測遺漏的安裝程式快取檔案,SQL Server 元件。如果您執行 BPA 工具,並發生錯誤的安裝程式-標題與安裝程式快取遺漏進行 SQL 安裝,然後再快取檔案便會遺失快取資料夾中。SQL Server 2012



FindSQLInstalls.vbs 指令碼

' Copyright © Microsoft Corporation.  All Rights Reserved.' This code released under the terms of the ' Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)  On Error Resume Next Dim arrSubKeys, arrSubKeys2Dim objFSO, objShell, objFile, objReg, objConn, objExecDim strComputer, strKeyPath, strNewSourceDim strWorkstationName, strDBPath, strSubKey, strSubKey2(), strKeyPath02,  strRetValue00Dim strRetValue01, strRetValue02, strRetValNew02, strRetValNew03, strRetValNew04, strRetValNew05, strRetValNew06, strRetValNew07, strRetValNew08, strRetValNew09, strRetValue10, strRetValNew10, strRetValNew11, strRetValNew12, strRetValNew13, strRetValNew14, strRetValNew14a, strRetValNew14b, strRetValNew15, strRetValNew15a, strRetValNew15b, strRetValNew16, strRetValNew17, strRetValNew18 Const HKCR = &H80000000 'HKEY_CLASSES_ROOTConst HKLM = &H80000002 'HKEY_LOCAL_MACHINEConst ForReading = 1, ForWriting = 2, ForAppEnding = 8 ' Checking for Elevated permissionsDim oShell, oExecszStdOutszStdOut = ""Set oShell = CreateObject("WScript.Shell")Set oExec = oShell.Exec("whoami /groups") Do While (oExec.Status = cnWshRunning)    WScript.Sleep 100       if not oExec.StdOut.AtEndOfStream Then                szStdOut = szStdOut & oExec.StdOut.ReadAll       end IfLoop select case oExec.ExitCode   case 0       if not oExec.StdOut.AtEndOfStream Then           szStdOut = szStdOut & oExec.StdOut.ReadAll       End If       If instr(szStdOut,"Mandatory Label\High Mandatory Level") Then                wscript.echo "Elevated, executing script and gathering requested data"       Else           if instr(szStdOut,"Mandatory Label\Medium Mandatory Level")  Then          Wscript.echo "Not Elevated must run from Administrative commmand line."       Else          Wscript.echo "Gathering requested data..."           end If      End If   case Else       if not oExec.StdErr.AtEndOfStream Then          wscript.echo oExec.StdErr.ReadAll       end If       end select '' Leaving strNewSource will result in no search path updating.' Currently DO NOT EDIT these.strNewSource = ""strNewRTMSource = "" ' Define string valuesstrComputer = "."strSQLName = "SQL"strDotNetName = ".NET"strVStudioName = "Visual Studio"strXML = "XML"strOWC = "Microsoft Office 2003 Web Components"strKeyPath = "Installer\Products"strKeyPath2 = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products"strNValue00 = "ProductName"strNValue01 = "PackageName"strNValue02 = "LastUsedSource"strNValue03 = "InstallSource"strNValue04 = "LocalPackage"strNValue05 = "DisplayVersion"strNValue06 = "InstallDate"strNValue07 = "UninstallString"strNValue08 = "PackageCode"strNValue09 = "MediaPackage"strNValue10 = "InstallSource"strNValue11 = "AllPatches"strNValue12 = "NoRepair"strNValue13 = "MoreInfoURL"strNValue14 = "PackageName"strNValue15 = "LastUsedSource"strNValue16 = "Uninstallable"strNValue17 = "DisplayName"strNValue18 = "Installed" If WScript.arguments.count <> 1 Then   WScript.echo "Usage: cscript " & WScript.scriptname & " outputfilename.txt"   WScript.quitEnd If '--Setup the output fileSet fso = CreateObject("Scripting.FileSystemObject")Set txtFile = fso.OpenTextFile(WScript.arguments(0), ForWriting, True)If err.number <> 0 Then    WScript.echo "Error 0x" & myHex(err.number,8) & ": " & err.source & " - " & err.description    WScript.quitEnd If txtFile.writeline "Products installed on the local system"txtFile.writeline " "txtFile.writeline " "  Set objFSO = CreateObject("Scripting.FileSystemObject")Set objShell = WScript.CreateObject("WScript.Shell") '--Set up the registry provider.Set objReg = GetObject("winmgmts:\\" & strComputer & _"\root\default:StdRegProv") Set wiInstaller = CreateObject("WindowsInstaller.Installer") '--Enumerate the "installer\products" key on HKCRobjReg.EnumKey HKCR, strKeyPath, arrSubKeys For Each strSubKey In arrSubKeys ' Define the various registry pathsstrProduct01 = "Installer\Products\" & strSubKeystrKeyPath02 = "Installer\Products\" & strSubKey & "\SourceList"strKeyPath03 = "Installer\Products\" & strSubKey & "\SourceList\Media"strInstallSource = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\" & strSubKey & "\InstallProperties\"strInstallSource2 = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\" & strSubKey & "\patches\"strInstallSource3 = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches"strInstallSource5 = "SOFTWARE\Classes\Installer\Patches\"strInstallSource6 = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"strInstallSource7 = "SOFTWARE\Microsoft\Microsoft SQL Server\"strInstallSource8 = "SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server\" ' Pull the intial valuesobjReg.GetStringValue HKCR, strProduct01, strNValue00, strRetValue00objReg.GetStringValue HKCR, strKeyPath02, strNValue01, strRetValue01objReg.GetStringValue HKCR, strKeyPath02, strNValue02, strRetValue02strRetValNew02 = Mid(strRetValue02, 5)objReg.GetStringValue HKCR, strKeyPath03, strNValue09, strRetValue09strRetValue10 = strNewRTMSource & strRetValue09objReg.GetStringValue HKLM, strInstallSource, strNValue03, strRetValNew03objReg.GetStringValue HKLM, strInstallSource, strNValue04, strRetValNew04objReg.GetStringValue HKLM, strInstallSource, strNValue05, strRetValNew05objReg.GetStringValue HKLM, strInstallSource, strNValue06, strRetValNew06objReg.GetStringValue HKLM, strInstallSource, strNValue07, strRetValNew07objReg.GetStringValue HKLM, strInstallSource, strNValue10, strRetValNew10objReg.GetStringValue HKLM, strInstallSource, strNValue12, strRetValNew12objReg.GetStringValue HKLM, strInstallSource, strNValue13, strRetValNew13objReg.GetStringValue HKLM, strInstallSource2, strNValue11, strRetValNew11 ' Pull the Product Code from the Uninstall StringstrProdCode = strRetValNew07  ProdCodeLen = Len(strProdCode)  ProdCodeLen = ProdCodeLen - 14strRetValNew08 = Right(strProdCode, ProdCodeLen) ' Pull out path from LastUsedSourcestrGetRealPath = strRetValue02  GetRealPath = Len(strRetValue02)strRealPath = Mid(strRetValue02, 5, GetRealPath) ' Identifie the string in the ProductNameIf instr(1, strRetValue00, strSQLName, 1) Then' Start the log output    txtFile.writeline "================================================================================"    txtFile.writeline "PRODUCT NAME   : " & strRetValue00    txtFile.writeline "================================================================================"    txtFile.writeline "  Product Code: " & strRetValNew08    txtFile.writeline "  Version     : " & strRetValNew05    txtFile.writeline "  Most Current Install Date: " & strRetValNew06    txtFile.writeline "  Target Install Location: "  & strRetValNew13    txtFile.writeline "  Registry Path: "    txtFile.writeline "   HKEY_CLASSES_ROOT\" & strKeyPath02    txtFile.writeline "     Package    : " & strRetValue01    txtFile.writeline "  Install Source: " & strRetValue10    txtFile.writeline "  LastUsedSource: " & strRetValue02'   txtFile.writeline "Does this file on this path exist? " & strRetValNew02 & "\" & strRetValue01    If fso.fileexists(strRetValNew02 & "\" & strRetValue01) Then    txtFile.writeline  " "        txtFile.writeline "    " & strRetValue01 & " exists on the LastUsedSource path, no actions needed."    Else        txtFile.writeline " "        txtFile.writeline " !!!! " & strRetValue01 & " DOES NOT exist on the path in the path " & strRealPath & " !!!!"        txtFile.writeline " "        txtFile.writeline " Action needed, re-establish the path to " & strRealPath' Placeholder for altering the LastUsedSource by adding source location and Forcing search of list'        If strNewSource <> "" Then'        txtFile.writeline "      New Install Source Path Added: " & strNewSource'        wiInstaller.AddSource strRetValNew08, "", strNewSource'        Else'        If strNewRTMSource <> "" Then'        wiInstaller.AddSource strRetValNew08, "", strNewRTMSource'        txtFile.writeline "      Forcing SourceList Resolution For: " & strRetValNew08'        wiInstaller.ForceSourceListResolution strRetValNew08, ""'        End If'        End If    End If        txtFile.writeline " "        txtFile.writeline "Installer Cache File: " & strRetValNew04    If fso.fileexists(strRetValNew04) Then        txtFile.writeline " "        txtFile.writeline "    Package exists in the Installer cache, no actions needed."        txtFile.writeline "    Any missing packages will update automatically if needed assuming that"        txtFile.writeline "    the LastUsedSource exists."        txtFile.writeline " "        txtFile.writeline "    Should you get errors about " & strRetValNew04 & " or " & strRealPath & strRetValue01 & " then you"        txtFile.writeline "    may need to manually copy the file, if file exists replace the problem file, "         txtFile.writeline "    Copy and paste the following command line into an administrative command prompt:"        txtFile.writeline " "        txtFile.writeline "     Copy " & chr(34) & strRealPath  & strRetValue01 & chr(34) & " " &strRetValNew04        txtFile.writeline " "    ElseIf fso.fileexists(strRetValNew02 & "\" & strRetValue01) Then              fso.CopyFile strRetValNew02 & "\" & strRetValue01, strRetValNew04        If fso.fileexists(strRetValNew04) Then          txtFile.writeline " "          txtFile.writeline "     Missing cache file replaced by copying " & strRealPath  & strRetValue01 & " to " & strRetValNew04          txtFile.writeline "     Previously missing package " & strRetValNew04 &  " now exists in the Installer cache."          txtFile.writeline " "        End If    Else        txtFile.writeline " "        txtFile.writeline " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"        txtFile.writeline " !!!! " & strRetValNew04 & " DOES NOT exist in the Installer cache. !!!!"        txtFile.writeline " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"        txtFile.writeline " "        txtFile.writeline "     Action needed, recreate or re-establish path to the directory:"        txtFile.writeline "       " & strRealPath & "then rerun this script to update installer cache and results"        txtFile.writeline "     The path on the line above must exist at the root location to resolve"        txtFile.writeline "     this problem with your msi/msp file not being found or corrupted,"        txtFile.writeline "     In some cases you may need to manually copy the missing file or manually"        txtFile.writeline "     replace the problem file overwriting it is exist: "         txtFile.writeline " "        txtFile.writeline "     Copy " & chr(34) & strRealPath  & strRetValue01 & chr(34) & " " &strRetValNew04        txtFile.writeline " "        txtFile.writeline "     Replace the existing file if prompted to do so."        txtFile.writeline " "    End If    txtFile.writeline " "    txtFile.writeline strRetValue00 & " Patches Installed "    txtFile.writeline "--------------------------------------------------------------------------------"     err.clear    objReg.EnumKey HKLM, strInstallSource2, arrSubKeys2    uUpperBounds = UBound(arrSubKeys2,1)     If err.number = 0  Then        For Each strSubKey2 in arrSubKeys2    '    WScript.echo "value = " & strSubKey2 strKeyPath04 = "Installer\Patches\" & strSubKey2 & "\SourceList"      objReg.GetDWORDValue HKLM, strInstallSource2 & "\" & strSubKey2 & "\", strNValue16, strRetValue16     objReg.GetStringValue HKCR, strKeyPath04, strNValue15, strRetValue15a     objReg.GetStringValue HKCR, strKeyPath04, strNValue14, strRetValue14a     objReg.GetStringValue HKCR, strKeyPath02, strNValue15, strRetValue15b     objReg.GetStringValue HKCR, strKeyPath02, strNValue14, strRetValue14b     objReg.GetStringValue HKLM, strInstallSource2 & "\" & strSubKey2 & "\", strNValue17, strRetValue17     objReg.GetStringValue HKLM, strInstallSource2 & "\" & strSubKey2 & "\", strNValue18, strRetValue18     objReg.GetStringValue HKLM, strInstallSource2 & "\" & strSubKey2 & "\", strNValue13, strRetValue13a     objReg.GetStringValue HKLM, strInstallSource3 & "\" & strSubKey2 & "\", strNValue04, strRetValue04a ' Pull the URL from the MoreInfoURL StringstrMoreInfoURL = strRetValue13a  MoreInfoURLLen = Len(strMoreInfoURL)strRetValue13b = Right(strMoreInfoURL, 42) ' Pull the URL from the LastUsedPath StringstrLastUsedPath = strRetValue15a  LastUsedPathLen = Len(strLastUsedPath)  'LastUsedPathLen = LastUsedPathLen - 15strRetValue15c = Mid(strLastUsedPath, 5)       txtFile.writeline " Display Name:    " & strRetValue17       txtFile.writeline " KB Article URL:  " & strRetValue13b      txtFile.writeline " Install Date:    " & strRetValue18               txtFile.writeline "   Uninstallable:   " & strRetValue16       txtfile.writeline " Patch Details: "      txtFile.writeline "   HKEY_CLASSES_ROOT\Installer\Patches\" & strSubKey2              txtFile.writeline "   PackageName:   " & strRetValue14a' Determine if someone has modified the Uninstallable state from 0 to 1 allowing possible unexpected uninstalls              txtFile.writeline "    Patch LastUsedSource: " & strRetValue15a               txtFile.writeline "   Installer Cache File Path:     " & strRetValue04a         txtFile.writeline "     Per " & strInstallSource3 & "\" & strSubKey2 & "\" & strNValue04              mspFileName = (strRetValue15c  & strRetValue14a)      If strRetValue14a <> "" Then      If fso.fileexists(strRetValue04a) Then        txtFile.writeline " "        txtFile.writeline "    Package exists in the Installer cache, no actions needed."        txtFile.writeline "    Package will update automatically if needed assuming that"        txtFile.writeline "    the LastUsedSource exists."        txtFile.writeline " "        txtFile.writeline "    Should you get errors about " & strRetValue04a & " or " & strRetValue15c  & strRetValue14a & " then you"        txtFile.writeline "    may need to manually copy missing files, if file exists replace the problem file, "         txtFile.writeline "    Copy and paste the following command line into an administrative command prompt."        txtFile.writeline " "        txtFile.writeline "     Copy " & chr(34) & strRetValue15c  & strRetValue14a & chr(34) & " " & strRetValue04a        txtFile.writeline " "      ElseIf fso.fileexists(mspFileName) Then              fso.CopyFile mspFileName, strRetValue04a          If fso.fileexists(strRetValue04a) Then          txtFile.writeline " "          txtFile.writeline " Missing cache file replaced by copying " & strRetValue15c  & strRetValue14a & " to " & strRetValue04a          txtFile.writeline " Previously missing package " & strRetValNew04 &  " now exists in the Installer cache."          txtFile.writeline " "          End If'        End If      Else        txtFile.writeline " "        txtFile.writeline "!!!! " & strRetValue04a & " package DOES NOT exist in the Installer cache. !!!!"        txtFile.writeline " "        txtFile.writeline "     Action needed, recreate or re-establish path to the directory:"        txtFile.writeline "       " & strRetValue15c & " then rerun this script to update installer cache and results"        txtFile.writeline "     The path on the line above must exist at the root location to resolve"        txtFile.writeline "     this problem with your msi/msp file not being found or corrupted,"        txtFile.writeline "     In some cases you may need to manually copy missing files or manually"        txtFile.writeline "     replace the problem file, "         txtFile.writeline " "        txtFile.writeline "     Copy " & chr(34) & strRetValue15c  & strRetValue14a & chr(34) & " " & strRetValue04a        txtFile.writeline " "        txtFile.writeline "     Replace the existing file if prompted to do so."        txtFile.writeline " "        txtFile.writeline "     Use the following URL to assist with downloading the patch:"        txtFile.writeline "      " & strRetValue13b        txtFile.writeline " "        txtFile.writeline " "      End If       Else        txtFile.writeline " "     End If        next     Else        txtfile.writeline " "        txtfile.Writeline "  No Patches Found"        txtfile.writeline " "    End If     End If  NexttxtFile.CloseSet txtFile = NothingSet fso = Nothing

警告:本文為自動翻譯

內容

文章識別碼:969052 - 最後檢閱時間:03/08/2016 18:47:00 - 修訂: 16.0

Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Enterprise Evaluation, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Express with Advanced Services, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Standard Edition for Small Business, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Express with Advanced Services, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Standard Edition for Small Business, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Evaluation Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Express Edition with Advanced Services, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web

  • kbtshoot kbexpertiseinter kbprb kbsurveynew kbmt KB969052 KbMtzh
意見反應