Cómo restaurar los archivos de caché de Windows Installer que faltan y resolver los problemas que se producen durante una actualización de SQL Server

Síntomas

El proceso que se describe en este artículo proporciona ayuda de emergencia solamente y no una solución permanente. Los clientes que utilicen este proceso de emergencia deben validar su caché de Windows Installer mediante el Paquete de Comprobador de caché de Windows Installer, como se indica en el artículo KB 2667628.

Cuando intenta instalar un service pack de Microsoft SQL Server o una actualización acumulativa, puede encontrar los siguientes mensajes de error, y éstos pueden indicar problemas con la caché de Windows Installer. La caché de Windows Installer, ubicado en la carpeta c:\windows\installer , almacena importantes archivos de aplicaciones instalan utilizando la tecnología de Windows Installer y no deberían ser eliminados. Si la caché de installer se ha comprometido, puede no inmediatamente, consulte problemas hasta que se realice una acción como desinstalarán, reparacion o actualización de SQL Server.

Al instalar SQL Server, Windows Installer almacena los archivos críticos en la caché de Windows Installer (por defecto es C:\Windows\Installer). Estos archivos son necesarios para desinstalar y actualizar aplicaciones. No se copien los archivos faltantes entre equipos, ya que son únicos.

Microsoft recomienda que las instalaciones de SQL Server siga primero el proceso de reparación que se describe en los siguientes artículos para comprobar su instalación actual:

Debe ejecutar la reparación desde el medio de instalación original, utilizando la línea de comandos siguiente:

setup.exe /ACTION=REPAIR /INDICATEPROGRESS=TRUE

Reparar las características y los componentes comunes compartidos en primer lugar y, a continuación, repita el comando para reparar las instancias instaladas. Durante el proceso de reparación, desaparece el cuadro de diálogo. Siempre y cuando la ventana de progreso muestra un error, el proceso de reparación está procediendo como se esperaba.

Nota: Los siguientes mensajes de error pueden encontrarse como mensajes de texto en el registro de sucesos o en los registros de instalación se encuentran en una de las siguientes carpetas, e indican que debe reparar su instancia afectada se continuar:
  • Para SQL Server 2008 y SQL Server 2008 R2:
    C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap
  • Para SQL Server 2012:
    C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap
Para SQL 2005 (todas las ramas)
Versión del productoMensaje de error cuando falta el paquete de Installer (MSI)Mensaje de error cuando falta el paquete de caché de Installer (MSP)
SQL Server 2005
1636 no se puede instalar el archivo MSI de Windows Installer
1636 no se puede instalar el archivo MSP de Windows Installer
Nota: Debe revisar los archivos de registro de instalación para identificar si faltan los archivos de la caché. Para obtener más información acerca de cómo hacerlo, vaya a la sección "Solución".

Para SQL Server 2008 SP1
Versión del productoMensaje de error cuando falta el paquete de Installer (MSI)Mensaje de error cuando falta el paquete de caché de Installer (MSP)
SQL Server 2008 SP1Ningún mensaje de error
TÍTULO: Error el programa de instalación de SQL Server.
------------------------------
El programa de instalación de SQL Server ha encontrado el siguiente error: no se puede abrir el archivo de revisión. El archivo es: c:\WINNT\Installer\1cf506f.msp. Código de error 0x84B20001.
------------------------------
Para el SP3 de SQL Server 2008 sólo generación (ramas de CU/RDA no son aplicables)
Versión del productoMensaje de error cuando falta el paquete de Installer (MSI)Mensaje de error cuando falta el paquete de caché de Installer (MSP)
El Service Pack 3 de SQL Server 2008
El archivo MSI en caché 'C:\Windows\Installer\2775c8.msi' no existe. Su archivo original es 'sql_engine_core_inst.msi' y se instaló para 'Microsoft SQL Server 2008 Database Engine Services' desde '< ruta de red >', versión ' 10.3.5500.0', idioma del producto 'ENU'.
No existe el archivo de revisión en caché "C:\Windows\Installer\19b19196.msp". El archivo original para este archivo almacenado en caché es "sql_engine_core_inst.msp", que se puede instalar desde la versión de "Service Pack 3 para SQL Server 2008 (KB2546951) (64 bits)," 10.3.5500.0
Nota: Recibirá el siguiente mensaje de error al realizar una actualización:
SQL Server error

Para SQL Server 2008 R2 SP1 sólo (ramas de CU/RDA no son aplicables)
Versión del productoMensaje de error cuando falta el paquete de Installer (MSI)Mensaje de error cuando falta el paquete de caché de Installer (MSP)
SQL Server 2008 R2 SP1
TÍTULO: Error el programa de instalación de SQL Server.
------------------------------
El programa de instalación de SQL Server ha encontrado el siguiente error: C:\Windows\Installer\932b909.msi.
------------------------------
No existe el archivo de revisión en caché "C:\Windows\Installer\105441.msp". El archivo original para este archivo almacenado en caché es "sql_engine_core_inst_loc.msp", que puede instalarse desde "Service Pack 1 para SQL Server 2008 R2 (KB2528583) (64 bits)", versión 10.51.2500.0.
Nota: Recibirá el siguiente mensaje de error al realizar una actualización:
SQL Server error

Para SQL Server 2008 R2 SP2
Versión del productoMensaje de error cuando falta el paquete de Installer (MSI)Mensaje de error cuando falta el paquete de caché de Installer (MSP)
SQL Server 2008 R2 SP1
El archivo MSI en caché 'C:\Windows\Installer\932b909.msi' no existe. Su archivo original es 'sql_engine_core_inst.msi' y se instaló idioma 'SQL Server 2008 R2 SP1 Database Engine Services' desde '< ruta de red >', versión ' 10.51.2500.0,' producto 'ENU'.
No existe el archivo de revisión en caché "C:\Windows\Installer\105441.msp". El archivo original para este archivo almacenado en caché es "sql_engine_core_inst_loc.msp", que puede instalarse desde "Service Pack 1 para SQL Server 2008 R2 (KB2528583) (64 bits)", versión 10.51.2500.0.
Nota: Recibirá el siguiente mensaje de error al realizar una actualización:
SQL Server error

Para SQL Server 2012 antes de CU2
No hay ningún mensaje si faltan archivos MSP o MSI. Sin embargo, el código de error 1714 se registra en el registro de instalación.

En el archivo Summary.txt:
Nombre de componente: SQL Server Setup Support Files
Código de error de componente: 1714

En el archivo Detail.txt:
Slp tiempo > < fecha ><: Sco: no existe el archivo 'd:\2d5feb4dd893c4adee47f15661ac\1033_ENU_LP\x64\setup\sqlsupport_msi\x64\SqlSupport.msi'
Slp tiempo > < fecha ><: Sco: no existe el archivo 'd:\2d5feb4dd893c4adee47f15661ac\1033_ENU_LP\x64\setup\sqlsupport_msi\x64\SqlSupport.msi'
Slp tiempo > < fecha ><: punto de comprobación: PREINSTALL_SQLSUPPORT_CPU64_ACTION
Tiempo > < fecha >< Slp: Sco: intentando crear clave de registro base HKEY_LOCAL_MACHINE, equipo < nombre del servidor >
Tiempo > < fecha >< Slp: Sco: intentando abrir la subclave del registro Software\Microsoft\Windows\CurrentVersion\Installer
Tiempo > < fecha >< Slp: Sco: intentando obtener el valor del registro InstallerLocation
Slp tiempo > < fecha ><: versión del instalador de Windows: 5.0.7601.17514
Tiempo > < fecha >< Slp: Sco: esperando msiserver' service' Aceptar la solicitud de detención.
Tiempo > < fecha >< Slp: Sco: intentando abrir Administrador SC
Tiempo > < fecha >< Slp: Sco: intentando abrir el identificador de servicio para el servicio msiserver
Slp tiempo > < fecha ><: invocar la API de QueryServiceStatus Win32
Tiempo > < fecha >< Slp: Sco: intentando cerrar el identificador de servicio para el servicio msiserver
Tiempo > < fecha >< Slp: Sco: intentando cerrar administrador SC
Slp tiempo > < fecha ><: paquete de destino: "d:\2d5feb4dd893c4adee47f15661ac\1033_ENU_LP\x64\setup\sqlsupport_msi\SqlSupport.msi"
Slp tiempo > < fecha ><: Error de MSI: 1714 No se puede quitar la versión anterior de Microsoft SQL Server 2012 instalación (en inglés). Póngase en contacto con su grupo de soporte técnico.
Tiempo > < fecha >< Slp: InstallPackage: MsiInstallProduct devolvió el código de resultado 1603.
Slp tiempo > < fecha ><: código de error de MSI utilizando para detectar la opción retry: 1714
Slp tiempo > < fecha ><: ningún reintento capaz MSI devolver código detectado.

Para SQL Server 2012 CU2 (y cualquier CU o SP)
Versión del productoMensaje de error cuando falta el paquete de Installer (MSI)Mensaje de error cuando falta el paquete de caché de Installer (MSP)
SQL Server 2008 R2 SP1
El archivo MSI en caché 'C:\Windows\Installer\ < file_encoded_name >.msi' no existe. Su archivo original es '' C:\Windows\Installer\sql_ < NombreCaracterística > .msi '}' y se instaló para el producto 'Microsoft SQL Server < versión >' desde 'C:\originalfolder', versión '< versionnumber >' lenguaje '< language >'.
No existe el archivo de revisión en caché "c:\Windows\Installer\1fdb1aec.msp". Su archivo original es "sql_engine_core_inst.msp", que puede instalarse desde el archivo de revisión en caché de 11.00.2100.60.The de versión "Revisión 2316 para SQL Server 2012 (KB2679368) (64 bits)", "C:\Windows\Installer\ < file_encoded_name > .msp ' falta. Su archivo original es '' C:\Windows\Installer\sql_ < NombreCaracterística > .msp '}', que puede instalarse desde 'Hotfix < número > para SQL Server 2012 < número de KB >', versión '< número de versión >'.
Nota: Bajo ciertas condiciones en SQL Server 2012, RTM media puede no estar registrado correctamente. Al desinstalar una actualización acumulativa o un service pack en esas circunstancias, el programa de instalación puede pedirle media RTM. Para evitar este problema, proporcione la ruta de los medios RTM durante el proceso de eliminación de la revisión.

Causa

Estos problemas pueden producirse cuando el archivo de base de datos de Windows Installer (.msi) o el archivo de revisión de Windows Installer (.msp) no existe en la caché de Windows Installer. La caché de Windows Installer se encuentra en la carpeta siguiente:
%windir%\installer
Cuando un producto está instalado con Windows Installer, una versión del archivo .msi original eliminada se almacena en la caché de Windows Installer. Todas las actualizaciones para el producto como una revisión, una actualización acumulativa o una instalación del service pack, también almacena el archivo de .msi o .msp pertinentes en la caché de Windows Installer.

Cualquier actualización futura del producto como una revisión, una actualización acumulativa o una instalación del service pack, se basa en la información de los archivos que se almacenan en la caché de Windows Installer. Sin esta información, la nueva actualización no puede realizar las transformaciones.

Solución

Para resolver estos problemas, utilice uno de los procedimientos siguientes.

Procedimiento 1: Utilice una secuencia de comandos

Para completar los pasos de este procedimiento, deberá copiar la secuencia de comandos de FindSQLInstalls.vbs de la sección "Más información" en una carpeta local en el equipo donde está intentando actualizar su instalación de SQL Server.

Nota: La secuencia de comandos FindSQLInstalls.vbs recopila la información para corregir las rutas de acceso del paquete no es válido. Y esta secuencia de comandos se utiliza con las ubicaciones de origen para asegurarse de que todos los paquetes MSP están en el directorio de caché de Windows Installer. Si está disponible el medio original, se vuelven a agregar los paquetes que faltan.

Para resolver estos problemas mediante una secuencia de comandos, siga estos pasos:
  1. Busque el directorio en el que guardó el contenido de la secuencia de comandos.
  2. Abra un símbolo del sistema con privilegios elevados para el directorio en el que guardó la secuencia de comandos y ejecute el siguiente comando:
    Cscript FindSQLInstalls.vbs %computername%_sql_install_details.txt
  3. Abra el archivo desde el paso 2 en un editor de texto como el Bloc de notas e identificar los problemas que están causando el error. Para ello, busque el archivo de texto para los modelos de cadena como la siguiente:
    • No
    • !!!
  4. Basándose en los resultados en el paso 3, siga los pasos que sean necesarios.

    Nota: Buscar más información acerca de estos pasos en la sección "Ejemplos".

  5. Repita los pasos del 2 al 4 hasta que el archivo de texto que se creó en el paso 2 ya no contiene texto que hace referencia a las rutas no válidas o los archivos que faltan para el componente que se está actualizando.

Ejemplos

Los siguientes ejemplos son entradas y explicaciones de las acciones que se describen en el archivo de salida que se genera cuando se ejecuta la secuencia de comandos FindSQLInstalls.vbs.

Ejemplo 1: Faltan archivos de instalador
El siguiente es un ejemplo de la salida que se genera cuando falta un paquete .msi en la carpeta de caché de Windows Installer.
================================================================================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\

La línea "LastUsedSource" señala a la ubicación que se utilizó para ejecutar el programa de instalación.

En la línea "LastUsedSource", la entrada m; significa media e indica que el origen de los medios de CD o DVD.

En el ejemplo siguiente, el origen es un CD o un DVD en la unidad G. Si se produjo la instalación desde una carpeta de archivos o desde un recurso compartido de red, la línea empieza con una entrada Norte; "LastUsedSource" seguido de una entrada de Numeric_Data_Name; y la ruta de acceso real:
!!!! 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\

La "acción necesaria" línea muestra la ruta de acceso completa que debe existir para poder actualizar los archivos que faltan para el medio de instalación original:
Installer Cache File: C:\WINDOWS\Installer\19b4d2.msi  

La línea "Archivo de caché del instalador" Confirma el nombre del archivo de caché de instalador:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! C:\WINDOWS\Installer\19b4d2.msi DOES NOT exist in the Installer cache. !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

La siguiente sección de la salida informa de las acciones que se requieren para resolver los archivos que faltan:
 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.
Ejemplo 2: Las revisiones que faltan
Las revisiones que faltan pueden producir entradas similares a las del ejemplo 1. La mayoría de los casos, observará que las entradas en la línea "LastUsedSource Patch" que hacen referencia a una revisión y esta línea es similar a la siguiente:
Patch LastUsedSource:   n;1;c:\0ca91e857a4f12dd390f0821a3\HotFixSQL\Files\ 

Este resultado indica lo siguiente acerca de la instalación de la revisión:
  • Se instaló la revisión original haciendo doble clic en el archivo ejecutable de la revisión.
  • El instalador de la revisión utiliza una carpeta temporal, c:\0ca91e857a4f12dd390f0821a3, durante la instalación de la revisión.
  • Para volver a crear la ruta de acceso, debe ejecutar el mismo ejecutable y agregar el siguiente parámetro:
    /x:c:\0ca91e857a4f12dd390f0821a3
    Nota: Este comando hace que el archivo ejecutable para extraer los archivos a la ubicación anterior de falta y se vuelve a crea la estructura que se requiere para actualizar la caché de Windows installer con los archivos que faltan. La ubicación real variará y que tenga una única revisión como un service pack que se extraen en varias ubicaciones. Cada producto instalado, incluye una sección que contiene la siguiente información para "Parches instalados":
    Display name:KB Article URL:  http://support.microsoft.com/?kbid=<value>
    Patch LastUsedSource:

    La línea "URL de artículo de KB" puede ayudar a descargar cualquier medio de la revisión, si es necesario.

Procedimiento 2: Restaurar manualmente los archivos

Para restaurar manualmente los archivos que faltan de la caché de Windows Installer, siga estos pasos:
  1. Recopilar todos los detalles sobre el archivo que falta desde el mensaje de error, desde el archivo de registro de instalación o de las entradas del registro que son mantenidas por el instalador de Windows. Por ejemplo, en el mensaje de Error 1 en la sección "Síntomas", toda la información necesaria para resolver el problema está presente en el mensaje de error:
    • PatchName: "revisión 1702 para SQL Server 2008 R2 (KB981355) (64 bits)"
    • Archivo MSP original utilizado por la revisión de seguridad: sql_engine_core_inst.msp
    • Archivo MSP en caché: c:\Windows\Installer\1fdb1aec.msp
  2. Si no tiene todos los detalles, consulte la sección "Más información para el procedimiento 2" para conocer los pasos recopilar estos detalles.

  3. Visite http://support.microsoft.comy busque el artículo KB que se asocia con esta revisión. En este ejemplo, debe buscar KB981355.
  4. Descargar este paquete de revisión en el equipo. Asegúrese de descargar el paquete de revisión que corresponde a la plataforma requerida. En este ejemplo, el paquete es SQLServer2008R2-KB981355-x64.exe.
  5. Extraiga el contenido del paquete de revisiones mediante la sintaxis siguiente:

    C:\Temp>SQLServer2008R2-KB981355-x64.exe /x C:\Temp\SQLServer2008R2-KB981355-x64\
  6. Busque el archivo de sql_engine_core_inst.msp de archivo msp original. El archivo debe estar en la carpeta siguiente:
    C:\Temp\SQLServer2008R2-KB981355-x64\x64\setup\sql_engine_core_inst_msi\
  7. Copie este archivo msp original a la caché de Windows Installer siguiente:

    %windir%\installer\
  8. Cambie el nombre del archivo msp original, sql_engine_core_inst.msp, a la siguiente:
    1fdb1aec.msp de archivo msp en caché

Puede iniciar el programa de instalación de la actualización que se produjo el error y reanudar el proceso de actualización. Puede encontrar este mensaje para un archivo de caché de Windows Installer que falta para otro componente u otra actualización del mismo producto.

Para obtener una lista de todos los archivos que faltan Windows Installer caché que están relacionados con los componentes del producto de SQL Server, puede descargar la herramienta de SQL Server 2008 R2 BPA que se menciona en la sección "Más información".

Si el mensaje de error hace referencia a un archivo de base de datos de Windows Installer (.msi) que faltan, no es necesario realizar los pasos 2 a 4. En su lugar, puede ir directamente al paso 5. Tiene que localizar el archivo .msi desde el medio original que usó para instalar el producto. Si este mensaje de error se generó para sql_engine_core_inst.msi, tienes que buscar este archivo desde el medio de instalación en la estructura de carpetas siguiente:
\x64\setup\sql_engine_core_inst_msi\
Los demás pasos son los mismos.

Para obtener más información para el procedimiento 2

Cómo obtener el paquete de revisión y los detalles del producto que falta un archivo .msp
Diferentes versiones del producto, generan mensajes de error diferentes para este problema. Aparecen los mensajes de error que se mencionan en la sección "Síntomas" para programas de instalación de actualizaciones a partir de Microsoft SQL Server 2008 SP1. Para otras actualizaciones, recibirá mensajes de error que no se pueden especificar con claridad el qué archivo de revisión no existe en la caché de Windows Installer y los detalles de la actualización específica. Estos mensajes de error, los archivos de registro de configuración contendrá información sobre el archivo de caché de Windows Installer que falta. Ejemplo de registro de instalación similar al siguiente:
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

Si examina cuidadosamente el registro de la instalación, ya proporciona la información sobre el archivo MSP Original que se utilizó la revisión siguiente:
sqlrun_sql.msp


Para obtener más detalles acerca del archivo .msp que faltan en la caché de Windows Installer, siga estos pasos:
  1. Busque el archivo .msp que falta en la siguiente subclave del registro de revisiones de Windows Installer:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\
  2. Encontrar el GUID de la revisión.
  3. Buscar el GUID de la revisión en la siguiente subclave del registro de productos de Windows Installer:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\
Para el registro de instalación de ejemplo, la información sobre el archivo .msp que falta y los detalles de revisión correspondientes están presentes en las entradas del registro siguientes:

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

Nombre: LocalPackage

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


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

Nombre: DisplayName

Datos: GDR 2050 para SQL Server la base de datos Services 2005 ENU (KB932555)

Ahora dispone de todos los puntos de información para iniciar los pasos para resolver los archivos que faltan en la caché de Windows Installer.

Nota: Si utiliza Microsoft SQL Server 2008 Service Pack 3 (SP3) o una versión posterior, también puede recibir un mensaje de error similar para los archivos .msi que faltan. Mediante el uso de este mensaje de error, puede determinar rápidamente qué archivo falta, qué service pack para descargar, y donde se puede encontrar la descarga.

Para obtener más información acerca de cómo obtener el service pack, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2546951 lista de los errores corregidos en el Service Pack 3 de SQL Server 2008

Más información

Para obtener más información acerca de los archivos de Windows Installer (.msi) de la base de datos, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):Para obtener más información acerca de los archivos de Windows Installer revisión (archivo .msp), visite el siguiente sitio Web MSDN:Para obtener más información acerca de los detalles internos de la caché de Windows Installer, consulte el blog MSDN siguiente:Para obtener más información sobre el proceso de revisión, consulte el blog MSDN siguiente:Para obtener más información acerca de cómo asegurarse de que almacena en caché el archivo de revisión para la plataforma correcta, consulte el blog MSDN siguiente:Para obtener más información acerca de por qué cualquier producto que use al instalador de Windows puede surgir este problema, consulte el blog MSDN siguiente:Para obtener más información acerca de los detalles acerca de los diferentes conjuntos de mensajes de error que aparecen en los archivos de registro de instalación, consulte el blog MSDN siguiente:

Para obtener más información acerca de los productos o herramientas que comprueban automáticamente si esta condición en la instancia de SQL Server y en las versiones del producto de SQL Server, vea la tabla siguiente:
Software de reglaTítulo de la reglaDescripción de la reglaVersiones del producto con el que se evalúa la regla
SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA)Instalación - caché Installer es que faltan para la instalación de SQLSQL Server 2008 R2 Best Practices Analyzer (BPA, SQL Server 2008 R2) proporciona una regla para detectar el archivo de caché falta el instalador para los componentes de SQL Server. El BPA de SQL Server 2008 R2 es compatible con SQL Server 2008 y SQL Server 2008 R2. Si ejecuta la herramienta BPA y se producirá un Error con el título de la instalación - caché Installer falta para la instalación de SQL y, a continuación, caché faltan los archivos de la carpeta de caché.SQL Server 2008
SQL Server 2008 R2
SQL Server 2012 Best Practice Analyzer (BPA de SQL Server 2012)Instalación - caché Installer es que faltan para la instalación de SQLSQL Server 2012 Best Practice Analyzer (BPA de SQL Server 2012) proporciona una regla para detectar el archivo de caché falta el instalador para los componentes de SQL Server. Si ejecuta la herramienta BPA y se producirá un Error con el título de la instalación - caché Installer falta para la instalación de SQL y, a continuación, caché faltan los archivos de la carpeta de caché.SQL Server 2012



Secuencia de comandos 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, 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
Propiedades

Id. de artículo: 969052 - Última revisión: 13 ene. 2017 - Revisión: 1

Comentarios