Install SQL 2005 cluster on Windows 2008 R2. It’s always a new issue. Most of them are known. But last night I installed SQL server 2005 cluster on Windows 2008 R2 64bit and the setup almost completed successfully. Little did it know that the Network name was not coming online and it did not start the cluster SQL service. I am not going to talk about the domain CO issue as it was fixed to get Network Name resource online and still the SQL Service does not come online as a cluster resource. When I check the Windows event log found the generic error.
Cluster resource ‘SQL Server’ in clustered service or application ‘[ServerName](MSSQLServer)’ failed.
I restarted the first node and waited for it to come online. When I logged in and opened the Failover Cluster Manager, I noticed the resources were all online and was happy that the issue was fixed when rebooted. So I failed over the resources back to primary node and again the SQL Server service failed to come online with the same generic error.
So the SQL Server in clustered service is not coming online only on one node. So I opened the ERRORLOG and it did started fine but then was shutdown as the cluster resource was not coming online. So I was not looking at the right place yet.
Cluster log. Yes that was my next stop to check for any errors. Generated the cluster log using the below command.
C:\>Cluster.exe log /g
The log will be saved to C:\Windows\Cluster\Reports\Cluster.log. Open the log file and you will find the messages similar to below in the cluster log.
00000fc0.0000081c::2012/07/23-22:31:01.533 ERR [RES] SQL Server <SQL Server>: [sqsrvres] ODBC sqldriverconnect failed
00000fc0.0000081c::2012/07/23-22:31:01.533 ERR [RES] SQL Server <SQL Server>: [sqsrvres] checkODBCConnectError: sqlstate = IM002; native error = 0; message = [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
When check if the sqsrvres.dll it was loaded fine in the log. So found the file sqsrvres.dll at C:\Windows\System32 and checked the properties of the file. In the details tab found the below information.
The version of the file is of SQL 2008 SP2. Later I realized that the server was first installed with SQL 2008 when it was a stand-alone machine. It was uninstalled and added to a cluster and we were trying to install SQL 2005 over it. Somehow the file was still there and that is creating the problems now. The SQL 2005 Native client could not connect to the 2008 version DLL file and was not allowing the cluster resource to come online. We can solve this issue by two methods.
Upgrade only the SQL Native client to SQL 2008 SP2 and try to bring the resources online. In my case I had the resources working fine on one node as it did not had the file version difference. I did not want to introduce more variables between two nodes to avoid any other issues in future. So I followed the second method.
1. Rename the existing sqsvres.dll to sqsvres_old.dll.
2. Copy the sqsvres.dll from the passive node to the active node.
3. Restart active node so it can register the new dll on reboot.
4. Once the primary node is up move the SQL Server group back and all the resources should come online.