I thought I'd share a very strange setup issue that we've seen a number of times both with Service Pack 4 and Hotfix installation.
When applying SP4 for SQL2000 the setup fails with the usually cryptic message about setup failing on a remote node. When you inspect the at the sqlsp log where setup was initiated we see something like this...
.....
CRemoteProcess::RunUntilComplete [0xac] error code: -1
CThreadPool::RunUntilCompleteHlpr WaitForMultipleObjects returned: 0
CThreadPool::RunUntilCompleteHlpr signaled thread [0xac]
Thread [0xac] exit code: [0xffffffff]
CRemoteProcess::RunUntilComplete [0xbc] exit code: 3010
Remote process exit code was '3010' (xxxxxxxxx1).
CThreadPool::RunUntilCompleteHlpr WaitForMultipleObjects returned: -1
CThreadPool::RunUntilCompleteHlpr signaled thread [0xbc]
Thread [0xbc] exit code: [0xffffffff]
CRemoteProcess::RunUntilComplete [0xa8] exit code: 3010
Remote process exit code was '3010' (xxxxxxxxx2).
CThreadPool::RunUntilCompleteHlpr signaled thread [0xa8]
Thread [0xa8] exit code: [0xffffffff]
CProcess::RunUntilComplete [0xa4] exit code: 3010
Remote process exit code was '3010' (xxxxxxxxx3).
CThreadPool::RunUntilCompleteHlpr signaled thread [0xa4]
Thread [0xa4] exit code: [0xffffffff]
CThreadPool::RunUntilComplete returned -1
CThreadPool::RunUntilComplete execution level=1, need execution: 0
One or more errors occurred while running the remote/unattended setups.
Disconnecting from remote machine (xxxxxxxxx4)...
........
18:53:52 End Action : Run setup on cluster nodes
18:53:52 One or more errors occurred while running remote setup on the clustered
machines.
18:54:59 Setup failed to perform required operations on the cluster nodes.
18:54:59 End Action : ClusterSetupHelper
18:54:59 Begin Action : LogEvent
18:54:59 End Action : LogEvent
18:54:59 Begin Action : CloseEventLog
18:54:59 End Action : CloseEventLog
Now we can ignore the 3010 result codes, these just indicate that a reboot is required.
On the remote node we get no log file generated.
We do see some rather cryptic message in the event log on the remote node
Information 26 25/6/2006 9:15:20
Application Popup xxxxxxxxx4 None
N/A
Application popup: remsetup.exe - Unable To Locate Component :This application has failed to start because cnvrem.dll was not found. Re-installing the application may fix this problem.
Information 26 25/6/2006 9:11:58
Application popup: remsetup.exe - Unable To Locate Component : This application has failed to start because cnvrem.dll was not found. Re-installing the application may fix this problem.
The above would explain why we don't get a log generated on the failing node since the remote setup didn't run.
Monitoring file access on the failing server the following was observed
cnvsvc3.exe:1980 QUERY
INFORMATION \\W000012004\admin$\PSAPI.DLL SUCCESS FileBasicInformation
3195 6:50:19 µµ cnvsvc3.exe:1980 CLOSE \\xxxxxxxxx4\admin$\PSAPI.DLL SUCCESS
3196 6:50:19 µµ cnvsvc3.exe:1980 OPEN \\xxxxxxxxx4\admin$\PSAPI.DLL IS DIRECTORY Options: Open Access: All
3197 6:50:19 µµ cnvsvc3.exe:1980 OPEN \\xxxxxxxxx4\admin$\PSAPI.DLL IS DRECTORY options: Open Access: Execute
Now PSAPI.DLL is returning 'IS DIRECTORY' true, inspecting the directories on the machine we found that there was indeed a directory
C:\Windows\PSAPI.DLL
This is an unusuall name for a directory to say the least, further searching on the C drive found valid PSAPI dlls so simply renaming the dirrectory C:\Windows\PSAPI.DLL to C:\Windows\xPSAPI.DLL was all that was required to allow the setup program to successfully complete.
A very similar issue occurs when you apply hotfixes, the log will look something like this
151.141: SQL DLL: BeforeInstallOps() returned 0
151.266: ================================================================================
151.266: 2008/08/29 17:12:53.184 (local)
151.266: f:\487f6b6fa9aa74ddc2\i386\update\update.exe (version 6.2.29.0)
151.266: SpawnInstancesForInstall: InstRetVal1 = 0x80
151.266: SQL DLL: Entered callback FailedInstallation()
151.266: SQL DLL: Instance Status Summary
151.281: SQL DLL: Instance Status: MSSQLServer - Failure
151.281: SQL DLL: Instance Status: SQLTools - Success
151.610: SQL DLL: Watson: Param1 = Unknown
151.610: SQL DLL: Watson: Param2 = 0x80
151.610: SQL DLL: Watson: Param3 = Unknown
151.610: SQL DLL: Watson: Param4 = 0x0
151.610: SQL DLL: Watson: Param5 = Unknown
151.610: SQL DLL: Watson: Param6 = Unknown
151.610: SQL DLL: Watson: Param7 = SQLServerClient
151.610: SQL DLL: Watson: Param8 = Update.exe@6.2.29.0
151.610: SQL DLL: Watson: Param9 =
151.610: SQL DLL: Watson: Param10 = 2275
151.610: SQL DLL: FailedInstallation() returned 128
151.610: DoInstallation: FailedInstallation Failed: 0x80
164.938: Message displayed to the user: An error in updating your system has occurred.
164.938: User Input: OK
Again the solution remains to rename/remove the offending directory.
-------------------------------------------------------------------------------------------------------------------------------------------------------
UPDATE:
This incorrect directory name can also cause failure of standalone installs.....