Installation of SQL Server 2000 Service Pack 4 on cluster environment may appear hung while installing MDAC Component on the remote machine
Consider a scenario wherein the Service Pack 4 on SQL Server 2000 Enterprise Edition is failing or get hung forever on an n-node cluster on Windows Server 2000 SP4 or Windows Server 2003 SP2. To get out of hung situation you need to kill the setup. After the failure of the setup you may see that SQL Server was upgraded to SP4 but you cannot do a failover. In this situation check the SQL Server Setup Logs on active node from C:\Windows\sqlsp.log. You may see something like the following at the end of the logs:
//////////////SQLSP.LOG from Active Node////////////////////
22:54:13 Setup is performing required operations on cluster nodes. This may take a few minutes...
22:54:13 "C:\DOCUME~1\ADMINI~1.COR\LOCALS~1\Temp\SqlSetup\Bin\remsetup.exe" C:\WINNT\remsetup.ini
23:46:07 Process Exit Code: (1460) This operation returned because the timeout period expired.
23:46:07 Begin Action : GetRemsetupRetCode
23:46:07 Installation return status on FNET2 : 3010
23:46:07 Installation return status on FNET1 : -1
23:46:07 End Action : GetRemsetupRetCode
#### SQL Server Remote Setup - Start Time 02/19/10 22:54:13 ####
CThreadPool::RunUntilCompleteHlpr create thread, index=0
CThread::Run thread [0x88] created for execution.
CThreadPool::RunUntilCompleteHlpr create thread, index=1
CThread::Run thread [0x8c] created for execution.
CThreadPool::RunUntilCompleteHlpr start thread [0x88],index=0
CThreadPool::RunUntilCompleteHlpr start thread [0x8c],index=1
Script file copied to '\\FNET1\ADMIN$\FNET1_MSSQLSERVER.iss' successfully.
Installing remote service (FNET1)...
CProcess::RunUntilComplete [0x88] exit code: 3010
Remote process exit code was '3010' (FNET2).
CThreadPool::RunUntilCompleteHlpr WaitForMultipleObjects returned: 0
CThreadPool::RunUntilCompleteHlpr signaled thread [0x88]
Thread [0x88] exit code: [0xbc2]
CThreadPool::RunUntilCompleteHlpr WaitForMultipleObjects returned: 3010
CThreadPool::RunUntilCompleteHlpr the operation timed out.
CThreadPool::RunUntilComplete returned 1460
CThreadPool::RunUntilComplete execution level=1, need execution: 0
One or more errors occurred while running the remote/unattended setups.
Disconnecting from remote machine (FNET2)...
Service removed successfully.
Remote files could not be removed.
#### SQL Server Remote Setup - Stop Time 02/19/10 23:31:05 ####
Disconnecting from remote machine (FNET1)...
Remote files removed successfully.
#### SQL Server Remote Setup - Stop Time 02/19/10 23:46:07 ####
23:46:07 End Action : Run setup on cluster nodes
23:46:07 One or more errors occurred while running remote setup on the clustered machines.
23:47:08 Setup failed to perform required operations on the cluster nodes.
23:47:08 End Action : ClusterSetupHelper
23:47:08 Begin Action : LogEvent
23:47:08 End Action : LogEvent
23:47:08 Begin Action : CloseEventLog
23:47:08 End Action : CloseEventLog
To resolve "Process Exit Code: (1460) This operation returned because the timeout period expired." message try following steps:
1. Start -> Run -> secpol.msc
2. Navigate to Local Policies\Security Options\Unsigned non-driver installation behaviour
3. Change this to Silently succeed
4. Choose Security Settings at the top of the tree.
5. Select Action - Reload
Now, check the sqlsp.log from the remote machine (Passive Machine) and you may see something like the following:
//////////////SQLSP.LOG from Passive Node////////////////////
02:19:06 SQL program folder: C:\Program Files\Microsoft SQL Server\MSSQL
02:19:06 SQL data folder: R:\MSSQL7
02:19:06 Windows system folder: C:\WINNT\system32\
02:19:06 Prog req: 62955, Data req: 0, Sys req: 50849
02:19:06 Prog avail: 34626576, Data avail: 0, Sys avail: 34626576
02:19:06 Prog req vs. avail, 113804, 34626576
02:19:06 Data req vs. avail, 0, 0
02:19:06 Sys req vs. avail, 50849, 34626576
02:19:06 Begin: InstallPkgs(ID_INSTALLMDAC)
02:19:06 Begin Action: Locked Connectivity Files Check
02:19:07 ConnectivityLocked returned: 0
02:19:07 The operation completed successfully.
02:19:07 End Action: Locked Connectivity Files Check
02:19:07 Setup is installing Microsoft Data Access Components (MDAC) ...
02:19:07 \\ServerName\C$\temp\SQL2KSP4\x86\Other\sqlredis.exe /q:a /C:"setupre.exe MDACQFE=0 -s -SMS"
02:19:07 Unloading library - sqlsut.dll (#U2)
Here, you can clearly see that the setup is installing MDAC on the remote machine and it got stuck during the installation of MDAC and eventually getting timeout. This could be due to corrupted MDAC on the remote machine. To verify issues with MDAC you can check DASETUP.Log which may give more details about the MDAC issue on the passive node. DASETUP.Log is located in the SystemRoot\Winnt or the SystemRoot\Windows\ folder. You must also check the MDAC Component Checker to verify any DLLs version mismatch. Component Checker can be downloaded from http://www.microsoft.com/downloads/details.aspx?FamilyId=8F0A8DF6-4A21-4B43-BF53-14332EF092C9&displaylang=en . If there are any DLLs with version mismatch, then you should first fix that and then proceed with the setup.
Even after following the above steps if the setup still fails then follow the below mentioned steps:
1. Reinstall the MDAC with the same version that currently exists on the server or the latest version (most likely MDAC 2.8 SP1). On Windows 2000\2003, you can install any arbitrary MDAC version, even if older than the current version, by following the steps below. Since MDAC is an operating system component, its installation is governed by ExceptionComponents registry keys. By deleting these keys, you can reinstall the same MDAC version or an older MDAC version. For newer versions, you do not have to delete these keys. They are located under the following registry key:
Remove keys within ExceptionComponent:
The keys have GUID names and a FriendlyName value. Any ExceptionComponent key with a FriendlyName containing the words MDAC, SQL, OLEDB, ODBC, MSXML, WEBDATA, etc. should be deleted. Most keys are MDAC keys. For example:
"FriendlyName"="Microsoft MDAC Response Files"
Note: Before doing this step, please take the backup of the registry.
2. Install latest MDAC version on both machines of the cluster.
3. Disable the following services on both nodes of the cluster:
RAC VNC Service
Remote Access Controller (RAC) Service
Anti Virus service
VNC Server Service
Some of the above services may not appear in your machine.
4. Reboot both nodes of the cluster one by one.
Then restart the installation from active node and make sure to log off completely from passive node. This time the setup should not get hung.
Sumit Sarabhai SE, Microsoft SQL Server
Mukesh Nanda TL, Microsoft SQL Server
require sql server 2000 sp4 for win xp professnal