Wiederherstellen fehlender Windows Installer-Cachedateien und Beheben von Problemen bei einer SQL Server-Aktualisierung

Problembeschreibung

In diesem Artikel beschriebenen Prozess bietet nur Soforthilfe und keine endgültige Fehlerbehebung. Benutzer dabei Notfall sollte die Windows Installer-Cache mit dem Windows Installer-Cache Verifier Paketüberprüft werden wie im KB-Artikel 2667628.

Wenn Sie versuchen, eine Microsoft SQL Server Servicepack oder ein kumulatives Update installieren, treten möglicherweise die folgenden Fehlermeldungen und diese möglicherweise Probleme mit Windows Installer-Cache. Der Windows Installer-Cache befindet sich im Ordner c:\windows\installer speichert wichtige Anwendungsdateien installiert Windows Installer-Technologie und sollte nicht gelöscht werden. Kompromittierung der Installer-Cache können Sie nicht sofort Siehe Probleme erst nach dem Ausführen einer Aktion wie deinstallieren, reparieren oder Aktualisieren von SQL Server.

Wenn Sie SQL Server installieren, speichert Windows Installer wichtige Dateien im Windows Installer-Cache (der Standardwert lautet C:\Windows\Installer). Diese Dateien sind zum Deinstallieren und Aktualisieren von Clientanwendungen erforderlich. Fehlende Dateien können nicht zwischen Computern kopiert werden, da sie eindeutig sind.

Microsoft empfiehlt, für SQL Server-Installationen zunächst den Reparaturvorgang zu verwenden, der in den folgenden Artikeln zum Überprüfen Ihrer aktuellen Installations beschrieben:

Die Reparatur sollte vom ursprünglichen Installationsmedium ausführen mithilfe der folgenden Befehlszeile:

setup.exe /ACTION=REPAIR /INDICATEPROGRESS=TRUE

Reparieren Sie allgemeine gemeinsame Komponenten und Features zuerst und wiederholen Sie den Befehl Reparieren Instanzen installiert. Während des Reparaturvorgangs verschwindet das Setupdialogfeld. Als Fenster Fehler nicht angezeigt wird, verläuft der Reparaturvorgang wie erwartet.

Hinweis Die folgenden Fehlermeldungen im Ereignisprotokoll oder in den Setup-Protokollen, die in einem der folgenden Ordner befinden als Textnachrichten gefunden werden, und laut die betroffene Instanz fortsetzen wird repariert werden soll:
  • Für SQL Server 2008 und SQL Server 2008 R2:
    C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap
  • Für SQL Server 2012:
    C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap
SQL 2005 (alle Zweige)
ProduktversionFehlermeldung beim fehlt das Installer-Paket (MSI)Fehlermeldung beim Installationsprogramm Cache Paket (MSP) fehlt
SQLServer 2005
1636 Windows Installer MSI-Datei installieren
1636 kann nicht Windows Installer MSP-Datei installiert
Hinweis Überprüfen Sie die Installationsprotokolldateien zu ermitteln, ob alle Cachedateien fehlen. Weitere Informationen hierzu finden Sie im Abschnitt "Lösung".

Für SQL Server 2008 SP1
ProduktversionFehlermeldung beim fehlt das Installer-Paket (MSI)Fehlermeldung beim Installationsprogramm Cache Paket (MSP) fehlt
SQL Server 2008 SP1Keine Fehlermeldung
Titel: SQL Server Setup-Fehler.
------------------------------
SQL Server wurde der folgenden Fehler aufgetreten: die Patch-Datei kann nicht geöffnet werden. Die Datei: c:\WINNT\Installer\1cf506f.msp. Fehlercode 0x84B20001.
------------------------------
Für SQL Server 2008 SP3 nur Build (CU-DDR Zweige sind nicht anwendbar)
ProduktversionFehlermeldung beim fehlt das Installer-Paket (MSI)Fehlermeldung beim Installationsprogramm Cache Paket (MSP) fehlt
SQL Server 2008 SP3
Die zwischengespeicherte MSI-Datei 'C:\Windows\Installer\2775c8.msi' ist nicht vorhanden. Die ursprüngliche Datei heißt "sql_engine_core_inst.msi", und sie wurde für das Produkt "Microsoft SQL Server 2008 Datenbankmoduldienste aus '<Pfad>', Version ' 10.3.5500.0" Produktsprache "ENU" installiert.
Die zwischengespeicherten Patch-Datei "C:\Windows\Installer\19b19196.msp" fehlt. Die Originaldatei für die zwischengespeicherte Datei ist "sql_engine_core_inst.msp", "Servicepack 3 für SQL Server 2008 (KB2546951) (64-Bit)," Version 10.3.5500.0 installiert werden kann
Hinweis Sie erhalten folgende Fehlermeldung, wenn Sie eine Aktualisierung durchführen:
SQL Server error

Für SQL Server 2008 R2 SP1 nur (CU-DDR Zweige sind nicht anwendbar)
ProduktversionFehlermeldung beim fehlt das Installer-Paket (MSI)Fehlermeldung beim Installationsprogramm Cache Paket (MSP) fehlt
SQL Server 2008 R2 SP1
Titel: SQL Server Setup-Fehler.
------------------------------
SQL Server wurde der folgenden Fehler aufgetreten: C:\Windows\Installer\932b909.msi.
------------------------------
Die zwischengespeicherten Patch-Datei "C:\Windows\Installer\105441.msp" fehlt. Die Originaldatei für die zwischengespeicherte Datei ist "sql_engine_core_inst_loc.msp", "Service Pack 1 für SQL Server 2008 R2 (KB2528583) (64 Bit)" installiert, Version 10.51.2500.0.
Hinweis Sie erhalten folgende Fehlermeldung, wenn Sie eine Aktualisierung durchführen:
SQL Server error

Für SQL Server 2008 R2 SP2
ProduktversionFehlermeldung beim fehlt das Installer-Paket (MSI)Fehlermeldung beim Installationsprogramm Cache Paket (MSP) fehlt
SQL Server 2008 R2 SP1
Die zwischengespeicherte MSI-Datei 'C:\Windows\Installer\932b909.msi' ist nicht vorhanden. Die ursprüngliche Datei ist "sql_engine_core_inst.msi" und für "SQL Server 2008 R2 SP1 Datenbankmoduldienste aus '< Netzwerkpfad >', Version ' 10.51.2500.0" Sprache "ENU" installiert wurde.
Die zwischengespeicherten Patch-Datei "C:\Windows\Installer\105441.msp" fehlt. Die Originaldatei für die zwischengespeicherte Datei ist "sql_engine_core_inst_loc.msp", "Service Pack 1 für SQL Server 2008 R2 (KB2528583) (64 Bit)" installiert, Version 10.51.2500.0.
Hinweis Sie erhalten folgende Fehlermeldung, wenn Sie eine Aktualisierung durchführen:
SQL Server error

Für SQL Server 2012 vor CU2
Es gibt keine Meldung für MSP oder MSI-Dateien. Fehlercode 1714 wird jedoch im Setupprotokoll protokolliert.

In der Datei "Summary.txt":
Komponentenname: SQL Server Setup-Unterstützungsdateien
Komponente-Fehlercode: 1714

In der Datei "Detail.txt":
< Datum >< > Slp: Sco: Datei 'd:\2d5feb4dd893c4adee47f15661ac\1033_ENU_LP\x64\setup\sqlsupport_msi\x64\SqlSupport.msi' ist nicht vorhanden.
< Datum >< > Slp: Sco: Datei 'd:\2d5feb4dd893c4adee47f15661ac\1033_ENU_LP\x64\setup\sqlsupport_msi\x64\SqlSupport.msi' ist nicht vorhanden.
< Datum >< > Slp: Prüfpunkt: PREINSTALL_SQLSUPPORT_CPU64_ACTION
< Datum >< > Slp: Sco: Basis Registrierungsschlüssel HKEY_LOCAL_MACHINE Computer < Servername > Erstellen
< Datum >< > Slp: Sco: Versuch Registrierungsunterschlüssel Software\Microsoft\Windows\CurrentVersion\Installer öffnen
< Datum >< > Slp: Sco: versuchen, den Registrierungswert InstallerLocation
< Datum >< > Slp: Windows Installer-Version: 5.0.7601.17514
< Datum >< > Slp: Sco: Warten auf Service "Msiserver" Stop-Anforderung akzeptieren.
< Datum >< > Slp: Sco: beim Öffnen des SC-Manager.
< Datum >< > Slp: Sco: Versuch Diensthandle Service Msiserver öffnen
< Datum >< > Slp: QueryServiceStatus Win32-API-aufrufen
< Datum >< > Slp: Sco: Versuch Service für Service Msiserver schließen
< Datum >< > Slp: Sco: Versuch, SC-Manager schließen
< Datum >< > Slp: Zielpaket: "d:\2d5feb4dd893c4adee47f15661ac\1033_ENU_LP\x64\setup\sqlsupport_msi\SqlSupport.msi"
< Datum >< > Slp: MSI-Fehler: 1714 die ältere Version von Microsoft SQL Server 2012-Setup (Englisch) kann nicht entfernt werden. Wenden Sie sich an den Support.
< Datum >< > Slp: InstallPackage: MsiInstallProduct zurückgegebene Ergebniscode 1603.
< Datum >< > Slp: Fehlercode MSI verwenden die Option "Wiederholen" erkennen: 1714
< Datum >< > Slp: keine Wiederholung können MSI-Rückgabecode gefunden.

Für SQL Server 2012 CU2 (und nachfolgende CU oder SP)
ProduktversionFehlermeldung beim fehlt das Installer-Paket (MSI)Fehlermeldung beim Installationsprogramm Cache Paket (MSP) fehlt
SQL Server 2008 R2 SP1
Die zwischengespeicherte MSI-Datei '< File_encoded_name > C:\Windows\Installer\. msi' ist nicht vorhanden. Die ursprüngliche Datei '' C:\Windows\Installer\sql_ < Funktionsname > .msi "}" und für das Produkt 'Microsoft SQL Server < Version >' von 'C:\originalfolder', Version < Versionsnummer >, < Sprache > Sprache installiert wurde.
Die zwischengespeicherten Patch-Datei "c:\Windows\Installer\1fdb1aec.msp" fehlt. Die ursprüngliche Datei ist "sql_engine_core_inst.msp", "Hotfix 2316 für SQL Server 2012 (KB2679368) (64 Bit)" Version 11.00.2100.60.The zwischengespeicherte Patchdatei installiert werden können "C:\Windows\Installer\ < File_encoded_name > .msp" fehlt. Die Originaldatei ist '' C:\Windows\Installer\sql_ < Funktionsname > .msp '}', die kann "Hotfix < Anzahl > für SQL Server 2012 < KB-Nummer >" Version < Versionsnummer > installiert werden.
Hinweis Unter bestimmten Umständen in SQL Server 2012 können RTM-Medien nicht ordnungsgemäß registriert. Wenn Sie ein kumulatives Update oder ein Servicepack deinstallieren unter diesen Umständen Setup fordert Sie möglicherweise für die RTM-Medien. Um dieses Problem zu umgehen, geben Sie den RTM Media Pfad beim Patch entfernen.

Ursache

Diese Probleme können auftreten, wenn die Windows Installer-Datenbankdatei (MSI) oder die Windows Installer-Patchdatei (MSP) von Windows Installer-Cache fehlt. Windows Installer-Cache befindet sich im folgenden Ordner:
%windir%\installer
Wenn ein Produkt mit Windows Installer installiert ist, ist eine abgespeckte Version der ursprünglichen MSI-Datei im Windows Installer-Cache gespeichert. Alle Updates für das Produkt einen Hotfix, ein kumulatives Update oder ein Service Pack Setup speichert auch die entsprechende MSP oder MSI-Datei im Windows Installer-Cache.

Alle zukünftigen Update auf das Produkt einen Hotfix, ein kumulatives Update oder Service Pack-Setup benötigt Informationen aus Dateien, die im Windows Installer-Cache gespeichert sind. Ohne diese Informationen kann nicht das neue Update erforderlichen Transformationen durchführen.

Problemlösung

Um diese Probleme zu beheben, verwenden Sie eines der folgenden Verfahren.

Schritt 1: Verwenden eines Skripts

Schritte in dieser Prozedur müssen Sie das Skript FindSQLInstalls.vbs aus dem Abschnitt "Weitere Informationen" in einen lokalen Ordner auf dem Computer kopieren, wo Sie Ihre SQL Server-Installation aktualisieren möchten.

Hinweis Das FindSQLInstalls.vbs-Skript sammelt die Informationen zum Paket ungültige Pfade zu korrigieren. Und dieses Skript wird vor der Quellspeicherort verwendet, um sicherzustellen, dass alle MSP-Pakete im Verzeichnis Windows Installer. Fehlende Pakete werden wieder hinzugefügt werden, ist die Originalmedien verfügbar.

Gehen Sie folgendermaßen vor, um diese Probleme zu beheben, mithilfe eines Skripts:
  1. Suchen Sie das Verzeichnis, in dem Skript Inhalte gespeichert.
  2. Öffnen Sie ein Eingabeaufforderungsfenster mit erhöhten Rechten zu dem Verzeichnis, in dem das Skript gespeichert, und führen Sie den folgenden Befehl:
    Cscript FindSQLInstalls.vbs %computername%_sql_install_details.txt
  3. Öffnen Sie die Datei aus Schritt 2 in einem Texteditor wie Notepad, und Probleme, die den Fehler verursachen. Suchen Sie dazu die Textdatei Muster wie die folgenden:
    • Tue nicht
    • !!!
  4. Basierend auf den Ergebnissen in Schritt 3 Schritte, die erforderlich sind.

    Hinweis Weitere Informationen zu diesen Schritten im Abschnitt "Beispiele" suchen.

  5. Wiederholen Sie die Schritte 2 bis 4, bis die in Schritt 2 erstellte Textdatei enthält mehr Text, die verweist auf ungültige Pfade oder fehlende Dateien für die Komponente, die aktualisiert wird.

Beispiele

In den folgenden Beispielen werden Einträge und Erläuterung der Aktionen, die in die Ausgabedatei beschrieben werden, die generiert wird, wenn das FindSQLInstalls.vbs-Skript ausführen.

Beispiel 1: Installateur Dateien fehlen
Folgendes ist ein Beispiel für die Ausgabe generiert wird, wenn Sie ein MSI-Paket im Windows Installer-Cache-Ordner fehlt.
================================================================================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\

Die Zeile "LastUsedSource" zeigt an, mit dem das Setupprogramm ausgeführt wurde.

M -Eintrag in der Zeile "LastUsedSource" bedeutet Media und gibt an, dass die ursprüngliche Quelle CD/DVD-Medien.

Im folgenden Beispiel ist eine CD oder DVD im Laufwerk G. Wenn ein Ordner oder eine Netzwerkfreigabe "LastUsedSource" Zeile mit einem Posten n, beginnt die Installation erfolgt ist, gefolgt von Numeric_Data_Name, Posten und den tatsächlichen Pfad:
!!!! 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\

"Aktion erforderlich" Zeile zeigt den vollständigen Pfad vorhanden sein muss, um fehlende Dateien für das ursprüngliche Installationsmedium aktualisieren:
Installer Cache File: C:\WINDOWS\Installer\19b4d2.msi  

Die Zeile "Installer-Cachedatei" bestätigt den Namen des Installer-Cachedatei:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! C:\WINDOWS\Installer\19b4d2.msi DOES NOT exist in the Installer cache. !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Im folgende Abschnitt der Ausgabe berät Sie erforderlich sind, um die fehlenden Dateien zu beheben:
 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.
Beispiel 2: Fehlende patches
Fehlende Patches möglicherweise Einträge, die in Beispiel 1 entsprechen. Meistens, sehen Sie Einträge in der Zeile "Patch LastUsedSource", die einen Patch verweisen und diese Zeile folgendermaßen aussehen:
Patch LastUsedSource:   n;1;c:\0ca91e857a4f12dd390f0821a3\HotFixSQL\Files\ 

Diese Ausgabe zeigt folgende Informationen über die Installation des Patch:
  • Der ursprüngliche Patch wurde durch Doppelklicken auf die ausführbare Datei der Patch installiert.
  • Das Installationsprogramm für das Update verwendet einen temporären Ordner, c:\0ca91e857a4f12dd390f0821a3, während der Installation des Patches.
  • Um den Pfad neu zu erstellen, führen Sie derselben ausführbaren Datei und fügen Sie den folgenden Parameter:
    /x:c:\0ca91e857a4f12dd390f0821a3
    Hinweis Dieser Befehl zwingt die ausführbare Datei zum Extrahieren der Dateien an vorherigen fehlt und diese neu erstellt die Struktur, die Windows Installer-Cache mit fehlenden Dateien aktualisieren muss. Die tatsächliche Position variieren und einzelner Patch wie ein Servicepack möglicherweise mit mehreren Speicherorten extrahiert werden. Alle installierten Produkte enthält einen Abschnitt mit den folgenden Informationen für "Patches installiert":
    Display name:KB Article URL:  http://support.microsoft.com/?kbid=<value>
    Patch LastUsedSource:

    Die Zeile "KB-Artikel URL" hilft Ihnen alle Medien Patch herunterladen ggf..

Schritt 2: Manuell Dateien

Um Windows Installer-Cache fehlen Dateien manuell wiederherzustellen, gehen Sie folgendermaßen vor:
  1. Die Fehlermeldung, die Protokolldatei oder die Registrierungseinträge, die von Windows Installer verwaltet werden erfassen Sie Einzelheiten über die fehlende Datei. Beispielsweise wird Fehler Nachricht 1 im Abschnitt "Symptome" alle Informationen, die erforderlich ist, um das Problem in der Fehlermeldung:
    • PatchName: "Hotfix 1702 für SQL Server 2008 R2 (KB981355) (64 Bit)"
    • Ursprüngliche MSP-Datei, die durch den Patch verwendet: sql_engine_core_inst.msp
    • Zwischengespeicherte MSP-Datei: c:\Windows\Installer\1fdb1aec.msp
  2. Haben Sie nicht alle Details, finden Sie im Abschnitt "Weitere Informationen für Schritt 2" Schritte zum Sammeln dieser Informationen.

  3. Besuchen Sie http://support.microsoft.comund Suchen nach dem KB-Artikel, der diesen Patch zugeordnet ist. In diesem Beispiel müssen Sie nach KB981355 suchen.
  4. Downloaden Sie dieser Sicherheitspatch auf Ihren Computer. Stellen Sie sicher, dass das Patchpaket entspricht der erforderlichen Plattform herunterladen. In diesem Beispiel ist das Paket SQLServer2008R2-KB981355-x64.exe.
  5. Extrahieren Sie den Inhalt des Pakets Patch mit der folgenden Syntax:

    C:\Temp>SQLServer2008R2-KB981355-x64.exe /x C:\Temp\SQLServer2008R2-KB981355-x64\
  6. Suchen Sie die ursprüngliche MSP-Datei sql_engine_core_inst.msp. Die Datei sollte sich im folgenden Ordner:
    C:\Temp\SQLServer2008R2-KB981355-x64\x64\setup\sql_engine_core_inst_msi\
  7. Kopieren Sie diese MSP-Originaldatei in Windows Installer-Cache:

    %windir%\installer\
  8. Benennen Sie die ursprüngliche MSP-Datei, sql_engine_core_inst.msp, folgenden Namen:
    zwischengespeicherte MSP-Datei 1fdb1aec.msp

Starten Sie das Installationsprogramm für das Update, das den Fehler verursacht hat, und den Aktualisierungsprozess fortsetzen. Diese Meldung für eine fehlende Windows Installer-Cachedatei für eine andere Komponente oder ein anderes Update des gleichen Produkts auftreten.

Eine Liste aller fehlende Windows Installer-Cache-Dateien erhalten, die Produktkomponenten SQL Server verknüpft sind, können Sie SQL Server 2008 R2 BPA-Tool herunterladen, das im Abschnitt "Weitere Informationen" genannt wird.

Wenn die Fehlermeldung verweist auf eine fehlende Datei für Windows Installer-Datenbank (MSI), müssen Sie keinen Schritte 2 bis 4. Stattdessen gelangen Sie direkt zu Schritt 5. Sie müssen die MSI-Datei von dem Originalmedium zu suchen, die Sie zum Installieren des Produkts. Diese Fehlermeldung wird für sql_engine_core_inst.msi generiert wurde, müssen Sie diese Datei aus den Setup-Medien unter die folgende Ordnerstruktur:
\x64\setup\sql_engine_core_inst_msi\
Die Schritte sind identisch.

Weitere Informationen für Schritt 2

Wie Sie das Paket und die Produktdetails für eine fehlende MSP-Datei
Andere Versionen des Produkts generiert Fehlermeldungen für dieses Problem. Für Setup-Programme mit Microsoft SQL Server 2008 SP1 Updates werden im Abschnitt "Symptome" aufgeführten Fehlermeldungen angezeigt. Andere Updates werden Fehlermeldungen, die eindeutig nicht angeben können, die Patch-Datei von Windows Installer-Cache und die spezifischen Details zum fehlt. Diese Fehlermeldungen enthält die Setupprotokolldateien Informationen über fehlende Windows Installer-Cachedatei. Ein Beispiel-Setup-Protokoll folgendermaßen aussehen:
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

Wenn sorgfältig dieses Installationsprotokoll gibt es bereits Sie Informationen über die ursprüngliche MSP-Datei, die verwendet wurde, indem Sie den folgenden Patch:
sqlrun_sql.msp


Gehen Sie folgendermaßen vor, um weitere Informationen über die fehlenden MSP-Datei im Windows Installer-Cache:
  1. Suchen Sie nach fehlenden MSP-Datei der Windows Installer-Patches Registrierungsunterschlüssel:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\
  2. Suchen Sie die Patch-GUID.
  3. Suchen Sie die Patch-GUID im Registrierungsunterschlüssel von Produkten:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\
Für Beispiel-Setup-Protokoll Informationen fehlen MSP-Datei und die entsprechenden Patch Details in die folgenden Registrierungseinträge vorhanden sind:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\A3B085EA74A9A7640A496636F7EF9A44
Wert: 0

Name: LocalPackage

Daten: C:\WINDOWS\Installer\145258.msp


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\1EB3A031CC585314E87AA527E46EECC2\Patches\A3B085EA74A9A7640A496636F7EF9A44 Wert: 6

Name: DisplayName

Daten: DDR 2050 für SQL Server-Datenbank Services 2005 DEU (KB932555)

Jetzt haben Sie alle Informationen an die Schritte, um die fehlenden Dateien im Windows Installer-Cache zu beheben.

Hinweis Wenn Sie Microsoft SQL Server 2008 Service Pack 3 (SP3) oder höher verwenden, erhalten Sie auch eine ähnliche Fehlermeldung für die fehlenden MSI-Dateien. Mithilfe dieser Fehlermeldung können Sie schnell feststellen, welche, welches Servicepack herunterladen, fehlt und finden den Download.

Weitere Informationen zum Beziehen des Servicepacks finden im folgenden Artikel der Microsoft Knowledge Base:
2546951 Liste der in SQL Server 2008 Service Pack 3 behobenen Probleme

Weitere Informationen

Weitere Informationen zu Windows Installer (MSI) Dateien finden Sie auf der folgenden Microsoft Developer Network (MSDN) Website:Weitere Informationen zu Windows Installer-Patchdateien (MSP-Datei) finden Sie auf der folgenden MSDN-Website:Weitere Informationen zu den internen Details der Windows Installer-Cache finden Sie im folgende MSDN-Blog:Weitere Informationen über den Aktualisierungsprozess finden Sie folgende MSDN-Blog:Weitere Informationen zu Patch-Datei für die richtige Plattform cache finden Sie die folgende MSDN-Blog:Weitere Informationen, warum ein Produkt, das Windows Installer verwendet, dieses Problem auftreten kann, finden Sie im folgende MSDN-Blog:Weitere Informationen zu den Details über unterschiedliche in Setup-Protokolldateien angezeigten Fehlermeldungen finden Sie die folgende MSDN-Blog:

Weitere Informationen zu den Produkten und Tools automatisch prüfen, ob dies die Instanz von SQL Server und der SQL Server-Versionen finden Sie in der folgenden Tabelle:
Regel-softwareRegel-TitelBeschreibungProduktversionen, die Regel ausgewertet wird
SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA)Setup - Installer-Cache ist für die SQL-InstallationSQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) enthält eine Regel, um fehlende Installer-Cachedatei für SQL Server-Komponenten erkennen. SQL Server 2008 R2 BPA unterstützt SQL Server 2008 und SQL Server 2008 R2. Wenn Sie BPA-Tool ein Fehler mit dem Setup - Installer-Cache fehlt für die SQL-Installation und dann die Cache-Dateien fehlen in den Cacheordner.SQL Server 2008
SQL Server 2008 R2
SQL Server 2012 Best Practice Analyzer (BPA für SQL Server 2012)Setup - Installer-Cache ist für die SQL-InstallationSQL Server 2012 Best Practice Analyzer (BPA für SQL Server 2012) enthält eine Regel, um fehlende Installer-Cachedatei für SQL Server-Komponenten erkennen. Wenn Sie BPA-Tool ein Fehler mit dem Setup - Installer-Cache fehlt für die SQL-Installation und dann die Cache-Dateien fehlen in den Cacheordner.SQL Server 2012



FindSQLInstalls.vbs-Skript

' 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, arrSubKeys2
Dim objFSO, objShell, objFile, objReg, objConn, objExec
Dim strComputer, strKeyPath, strNewSource
Dim strWorkstationName, strDBPath, strSubKey, strSubKey2(), strKeyPath02, strRetValue00
Dim 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_ROOT
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
Const ForReading = 1, ForWriting = 2, ForAppEnding = 8

' Checking for Elevated permissions
Dim oShell, oExec
szStdOutszStdOut = ""
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 If
Loop
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 values
strComputer = "."
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.quit
End If

'--Setup the output file
Set 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.quit
End 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 HKCR
objReg.EnumKey HKCR, strKeyPath, arrSubKeys

For Each strSubKey In arrSubKeys

' Define the various registry paths
strProduct01 = "Installer\Products\" & strSubKey
strKeyPath02 = "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 values
objReg.GetStringValue HKCR, strProduct01, strNValue00, strRetValue00
objReg.GetStringValue HKCR, strKeyPath02, strNValue01, strRetValue01
objReg.GetStringValue HKCR, strKeyPath02, strNValue02, strRetValue02
strRetValNew02 = Mid(strRetValue02, 5)
objReg.GetStringValue HKCR, strKeyPath03, strNValue09, strRetValue09
strRetValue10 = strNewRTMSource & strRetValue09
objReg.GetStringValue HKLM, strInstallSource, strNValue03, strRetValNew03
objReg.GetStringValue HKLM, strInstallSource, strNValue04, strRetValNew04
objReg.GetStringValue HKLM, strInstallSource, strNValue05, strRetValNew05
objReg.GetStringValue HKLM, strInstallSource, strNValue06, strRetValNew06
objReg.GetStringValue HKLM, strInstallSource, strNValue07, strRetValNew07
objReg.GetStringValue HKLM, strInstallSource, strNValue10, strRetValNew10
objReg.GetStringValue HKLM, strInstallSource, strNValue12, strRetValNew12
objReg.GetStringValue HKLM, strInstallSource, strNValue13, strRetValNew13
objReg.GetStringValue HKLM, strInstallSource2, strNValue11, strRetValNew11

' Pull the Product Code from the Uninstall String
strProdCode = strRetValNew07
ProdCodeLen = Len(strProdCode)
ProdCodeLen = ProdCodeLen - 14
strRetValNew08 = Right(strProdCode, ProdCodeLen)

' Pull out path from LastUsedSource
strGetRealPath = strRetValue02
GetRealPath = Len(strRetValue02)
strRealPath = Mid(strRetValue02, 5, GetRealPath)

' Identifie the string in the ProductName
If 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 String
strMoreInfoURL = strRetValue13a
MoreInfoURLLen = Len(strMoreInfoURL)
strRetValue13b = Right(strMoreInfoURL, 42)

' Pull the URL from the LastUsedPath String
strLastUsedPath = strRetValue15a
LastUsedPathLen = Len(strLastUsedPath)
'LastUsedPathLen = LastUsedPathLen - 15
strRetValue15c = 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


Next
txtFile.Close
Set txtFile = Nothing
Set fso = Nothing
Eigenschaften

Artikelnummer: 969052 – Letzte Überarbeitung: 13.01.2017 – Revision: 1

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 Express Edition with Advanced Services, Microsoft SQL Server 2005 Express Edition with Advanced Services, 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, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Enterprise, Microsoft SQL Server 2016 Express, Microsoft SQL Server 2016 Standard, Microsoft SQL Server 2016 Web

Feedback