The SQL Server Setup process is really straight-forward. An experienced user who has got a little knowledge in setting up other applications can also perform a SQL Cluster Setup but what if issues occur? What will you do if you don’t see the newly added disks in the SQL Cluster Setup wizard? What will you do if you don’t see the list of available nodes in the SQL Cluster Setup screen? What if SQL Cluster Setup wizard fails to configure other nodes in the cluster?

The main objective of this article is to explain the internal process behind the SQL Server Cluster Setup. Please note this article only explains the SQL Cluster Setup process. It doesn’t explain the SQL Server Standard Setup process. By reading this article you can explain the mechanism SQL Setup uses to find the list of nodes, list of disks and list of interfaces available in the cluster and also the SQL Cluster Setup DLL (SQLCluster.DLL) which is responsible to do the initial pre-work for SQL Setup wizard. This article also explains the how SQL Cluster Setup detects that it is going to operate in a cluster environment.

The second series of this article will explain all the registry entries and SQL modules/files which are important for a successful failover and how you can play with these registry entries and files to troubleshoot the SQL Cluster. Most of the article talks about the SQL Server 2000 but the process and troubleshooting techniques are the same for SQL Server 2005. This article will also explain how SQL Cluster Setup configures other nodes to be cluster-aware.

The failover clustering is used by the SQL Server because SQL Servers are state-full applications. When the SQL Server setup wizard realizes that it is going to operate in a cluster environment, the setup wizard will give you an option to create SQL Virtual Server. You will select this option to create a SQL Cluster. After you select the Virtual Sever option, the setup proceeds to invoke the SQL Cluster modules and perform many tasks in the background. These tasks and process will be explained in detail later in this article.

The following topics will be covered in this article:

How does SQL Setup process detect that it is going to operate in a cluster environment?

How SQL Setup knows which files to copy?

Which SQL module is responsible for SQL Cluster Setup and what all basic functions it implements for a successful installation?

From where does SQL Setup get a list of disks, nodes and interfaces available in the cluster?

In the next series of the article:

SQL Server Cluster Setup Troubleshooting Techniques

How does SQL Server cluster setup configure a second node to be cluster-aware?

What all registry entries are created during the setup and their importance in SQL Cluster and stand-alone?

What all SQL “Cluster” modules are copied during the setup and their importance in a SQL Cluster?

How do registry entries play an important role in failover process?

What all SQL modules are loaded when a SQL Server Instance is running as Active Node?

How does SQL Cluster Setup process detect that it is going to operate in a cluster environment?
When you start the SQL Server Setup wizard, it will give you the three options to install the SQL Server Database engine. The three options are:

Local Computer,

Remote Computer and

Virtual Server

The last option is to install the SQL Server Database engine in a cluster. The setup checks to see if it is going to install the SQL Database instance in a cluster environment. The Setup doesn’t really look for cluster modules or DLL files. Instead it checks the Cluster Service status. If Cluster Service is running it will give the option to install the SQL Virtual Server Instance. You will not see Virtual Server option if Cluster Service is not running or stopped for any reason. If you’re troubleshooting a SQL Server cluster installation, make sure the cluster is up and running (e.g. Cluster Service is running). Please note the Setup Wizard doesn’t check the registry of the Cluster Service at HKLMSystemCurrentControlSetServicesClusSvc. Instead it checks the ClusSvc.exe system instance which is running in Task Manager and executes a series of API calls via Service Control Manager (SCM) to check the status of the Cluster service.