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:
Overall summary:
Final result: The patch installer has failed to update the following instance: MSSQLSERVER. To determine the reason for failure, review the log files.
Exit code (Decimal): -2058354685
Exit facility code: 1360
Exit error code: 3
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:
2012-09-21 08:34:40 Slp: Error: Action "Microsoft.SqlServer.Configuration.ScoExtension.VerifiedCopyFileAction" threw an exception during execution.
2012-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.
2012-09-21 08:34:40 Slp: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
2012-09-21 08:34:40 Slp: at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite)
2012-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.