Atualizações do SQL Server apresentando erro 1635: Unable to install Windows Installer MSP file

Bem vindo! Sou a Renata Festa e faço parte do time de PFE (Premier Field Engineers) de SQL da Microsoft Brasil :)

Essa semana enfrentei um desafio interessante. Sempre que eram realizadas atualizações de SP, HOTFIX ou CU em determinados servidores, a atualização falhava. Ao consultar os logs do setup, era verificado o erro abaixo:

 

%ProgramFiles%\Microsoft SQL Server\90\Setup Bootstrap\LOG\Summary.txt

 

Error Number : 1635

Error Description : Unable to install Windows Installer MSP file

 

%ProgramFiles%\Microsoft SQL Server\90\Setup Bootstrap\LOG\Hotfix.txt

 

MSP returned 1635: This patch package could not be opened. Verify that the patch package exists and is accessible, or contact the application vendor to verify that this is a valid Windows Installer patch package.

 

Queríamos nos precaver de alguma maneira para evitar que o mesmo problema ocorre na próxima atualização. Resolvi então executar o comando abaixo no servidor. Com isso, pude analisar se essa falha era realmente devido a arquivos .msp e .msi que não estavam no servidor ou se a causa do problema era outra.

Para minha surpresa, ao executar o script verifiquei que diversos arquivos estavam faltando. Como o Windows utiliza um sistema de cache - onde a instalação é realizada a partir do arquivo anterior existente no servidor - se o mesmo não encontra esses arquivos nas pastas de instalação, ou pelo menos no C:\Windows\Installer, o setup falha.

 

Cscript FindSQLInstallsOnly.vbs %computername%_sql_install_details.txt

 

O script acima gera um arquivo de output no mesmo diretório do script. Neste arquivo de output, se buscarmos pela frase “Package does not exist in the Installer cache”, iremos localizer os arquivos que estão faltando de uma determinada instalação.

 

   Patch Key under:

   HKEY_CLASSES_ROOT\Installer\Patches\8A5D5E904D89C9F4689C77B438F2164E

        DisplayName = Service Pack 2 for SQL Server Tools and Workstation Components 2005 (64-bit) ENU (KB921896)

 The both Last Used Source should have same values:

        Last Used Source = n;1;h:\d96b2f512a03053d9135\HotFixTools\Files\

        Last Used Source = n;1;h:\d96b2f512a03053d9135\HotFixTools\Files\

        Install Date = 20070911

        Installer Cache File Path = C:\WINDOWS\Installer\38c58d7.msp

        Package does not exist in the Installer cache.

 

Para corrigir esse problema, é necessário copiar os arquivos que faltam novamente para o recurso C:\Windows\Installer. A questão é onde encontrar o arquivo 38c58d7.msp?

No exemplo acima, percebemos que o arquivo 38c58d7.msp não foi localizado na pasta de instalação e que o mesmo é associado à instalação do KB921896.

A partir de então, basta efetuar o download do setup deste KB referente à sua plataforma e salvar em um diretório qualquer. Após isso, execute o comando abaixo para que seja extraído os arquivos de instalação desse fix:

 

C:\pastaqualquer\SQLServer2005SP2-KB921896-x64-ENU.exe /extract

 

No diretório selecionado para extração, localize o arquivo sqlrun_sql.msp extraído. Renomeie o mesmo para o nome do arquivo que está faltando (no nosso exemplo 38c58d7.msp). Após renomear, copie para o diretório C:\WINDOWS\Installer\.

Execute novamente o comando abaixo e caso não encontre nenhum outro arquivo faltando, poderá efetuar a instalação novamente.

 

Cscript FindSQLInstallsOnly.vbs %computername%_sql_install_details.txt

 

A boa notícia é que para o SQL Server 2008, o BPA (Best Practices Analyzer) já efetua esse tipo de validação, sem a necessidade de executarmos o script .vbs :)

 

Download do BPA 2008

https://www.microsoft.com/download/en/details.aspx?id=15289

 

Arquivo fonte do script FindSQLInstallsOnly.vbs disponibilizado no site:

https://support.microsoft.com/default.aspx?scid=kb;en-us;2015100&sd=rss&spid=2855