SQL Server CU telepítés sikertelen

Immár sokadik alkalommal futok bele abba a hibába, hogy az SQL Server 2008 R2 CU teleptése során egy “sokatmondó” hibaüzenet fogad: Install Failed. Jujj de jóóó, ez sokat mond :-). Persze van log file a telepítőnek, így nagy gond nem lehet belőle. Megnyitva a logot a C:\Program Files\Microsoft SQL Server<verzió>\Setup Bootstrap\Log mappában a Summary.txt-ben elvileg lesz valami. Hát csak ennyi:

 1  Overall summary:
 2  Final result:                  The patch installer has failed to update the following instance: MSSQLSERVER. To determine the reason for failure, review the log files.
 3
 4  Exit code (Decimal):           -2058354685
 5
 6  Exit facility code:            1360
 7
 8  Exit error code:               3
 9
10  Exit message:                  The patch installer has failed to update the following instance: MSSQLSERVER. To determine the reason for failure, review the log files.

Na több sem kellett, megnéztem a legutolsó Details.txt-t ugyan ebben a mappában (az az aktuális dátum/időre elnevezett mappában). Ez már sokkal többet mondott:

12012-09-21 08:34:40 Slp: Error: Action "Microsoft.SqlServer.Configuration.ScoExtension.VerifiedCopyFileAction" threw an exception during execution.
22012-09-21 08:34:40 Slp: Microsoft.SqlServer.Setup.Chainer.Workflow.ActionExecutionException: File c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\DllTmp64\sqlagentctr100.dll could not be copied to file path C:\Windows\system32\perf-MSSQL10_50.MSSQLSERVER-sqlagtctr.dll. ---> Microsoft.SqlServer.Configuration.ScoExtension.CopyFileException: File d:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\DllTmp64\sqlagentctr100.dll could not be copied to file path C:\Windows\system32\perf-MSSQL10_50.MSSQLSERVER-sqlagtctr.dll. ---> Microsoft.SqlServer.Configuration.Sco.ScoException: The process cannot access the file 'C:\Windows\system32\perf-MSSQL10_50.MSSQLSERVER-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.MSSQLSERVER-sqlagtctr.dll' because it is being used by another process.
32012-09-21 08:34:40 Slp:    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
42012-09-21 08:34:40 Slp:    at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite)
52012-09-21 08:34:40 Slp:    at Microsoft.SqlServer.Configuration.Sco.SqlFile.CopyTo(String targetFileFullPath, Boolean bCopyAcl)

Itt már tisztán látszik, hogy mi a baj. A C:\Windows\system32\perf-MSSQL10_50.MSSQLSERVER-sqlagtctr.dll-t valami “fogja”. Miután átneveztem a CU már hiba nélkül felment. Megjegyzem, hogy bizonyos esetekben a C:\Windows\SysWOW64\perf-MSSQL10_50.MSSQLSERVER-sqlagtctr.dll-t is át kell nevezni, de ez a details.txt-ből minden esetben kiderül.

A tanúlság: mindig nézzük meg a Summary.txt-t és a details.txt-t, ha az SQL Server telepítőnk hibával elszáll.