SQL Server 2008 R2 SP2 CU3 (KB2754552) – Erro na instalação

Estava aplicando o SQL Server 2008 R2 SP2 CU3 em algumas instâncias de testes de meu ambiente, de acordo com nossa política de atualização de servidores, como resposta as falhas de seguranças mencionadas nesse artigo.

Ao aplicar a atualização recebi a mensagem de falha em todas (são várias) as instâncias e fui pesquisar qual o motivo da falha.

Falha na atualização

Para realizar a análise li o log da instalação no arquivo:

C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\DATA_E_HORA_DA_ATUALIZACAO\INSTANCIA\Detail.txt

Nele encontrei duas mensagens que pareciam explicar o problema

2012-10-25 22:23:54 SQLEngine: –PerfmonRegistration: Failed to delete file ‘C:\Windows\system32\perf-MSSQL$INSTANCIA-sqlctr10.52.4000.0.dll’. Error: Access to the path ‘C:\Windows\system32\perf-MSSQL$INSTANCIA-sqlctr10.52.4000.0.dll’ is denied.. Marking it to be deleted on reboot

e

2012-10-25 22:23:58 Slp: Microsoft.SqlServer.Setup.Chainer.Workflow.ActionExecutionException: File C:\Program Files\Microsoft SQL Server\MSSQL10_50.INSTANCIA\MSSQL\Binn\DllTmp64\sqlagentctr100.dll could not be copied to file path C:\Windows\system32\perf-MSSQL10_50.INSTANCIA-sqlagtctr.dll. —> Microsoft.SqlServer.Configuration.ScoExtension.CopyFileException: File C:\Program Files\Microsoft SQL Server\MSSQL10_50.INSTANCIA\MSSQL\Binn\DllTmp64\sqlagentctr100.dll could not be copied to file path C:\Windows\system32\perf-MSSQL10_50.INSTANCIA-sqlagtctr.dll. —> Microsoft.SqlServer.Configuration.Sco.ScoException: The process cannot access the file ‘C:\Windows\system32\perf-MSSQL10_50.INSTANCIA-sqlagtctr.dll’ because it is being used by another process. —> System.IO.IOException: The process cannot access the file ‘C:\Windows\system32\perf-MSSQL10_50.INSTANCIA-sqlagtctr.dll’ because it is being used by another process.

Ou seja, a instalação não conseguia remover o arquivo “C:\Windows\system32\perf-MSSQL$INSTANCIA-sqlctr10.52.4000.0.dll” (e marcou para tentar removê-lo durante o próximo boot) e não conseguia substituir o arquivo “C:\Windows\system32\perf-MSSQL10_50.INSTANCIA-sqlagtctr.dll”.

Fiz algumas pesquisas na internet e vi que algumas pessoas haviam aberto chamado com a Microsoft e a solução havia sido fazer o processo manualmente.

Resolvi tentar então o procedimento agindo da seguinte forma.

Utilizei os dois arquivos gerados pela atualização em:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.INSTANCIA\MSSQL\Binn\DllTmp64\

e verifiquei sua existência na pasta “C:\Windows\system32”.

No caso do primeiro arquivo ele já havia sido copiado, faltando apenas apagar o arquivo referente ao build anterior (C:\Windows\system32\perf-MSSQL$INSTANCIA-sqlctr10.52.4000.0.dll).

Já no caso do segundo arquivo, foi preciso parar a instância em questão e então fazer a substituição (obviamente mantive o arquivo antigo até que eu validasse todo o processo antes de removê-lo).

Com esse procedimento feito, só para garantir, executei novamente a instalação e o processo resultou em sucesso, como mostra a figura a seguir:

Sucesso na atualização

Obviamente, o ideal é que você abra um chamado de suporte com a Microsoft para analisar o problema do seu ambiente, só devendo realizar esse procedimento se estiver MUITO seguro do que está fazendo ou caso não tenha outra alternativa.

Obs: hoje, 07/11/2012, vi esse artigo da Microsoft falando sobre esse problema, inclusive já há um item no connect sobre ele.

Esse post foi publicado em Artigos, patches, Virtual PASS BR. Bookmark o link permanente.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s