This article discusses how to migrate existing Microsoft SQL Server 2005 failover clustered instances to Windows Server 2008 from Windows Server 2003 Service Pack 2.
Windows Server 2008 does not support the direct upgrading of failover clusters from earlier versions of Windows Server. This is because significant security improvements in Windows Failover Clustering Services removed backward compatibility. However, Windows Server 2008 supports un-clustered upgrades from Windows Server 2003 SP2.
Note To migrate a SQL Server 2000 failover cluster instance, you must upgrade that instance to SQL Server 2005 Service Pack 2. For more information about how to migrate SQL Server 2000 Clusters to SQL Server 2005 Clusters, click the following article number to view the article in the Microsoft Knowledge Base:
910233 Migrate a SQL Server 2000 Analysis Services cluster to a SQL Server 2005 Analysis Services cluster
There are three options for migrating SQL Server 2005 failover cluster instances from Windows Server 2003 to Windows Server 2008:
Build a new Windows Server 2008 cluster on new hardware, and then migrate the data from the old Windows Server 2003 cluster.
Un-cluster the nodes from a Windows Server 2003 failover cluster, upgrade each node, and then re-create the failover cluster on the upgraded Windows Server 2008 nodes.
Un-cluster the nodes from a Windows Server 2003 failover cluster, perform a clean installation of Windows Server 2008, and then re-create the failover cluster on the newly created Windows Server 2008 nodes.
These instructions are based on the following assumptions.
Note The node names, the SQL server failover cluster instances, and the drive letters are likely different:
Node1 and Node2 are the names of two of the nodes in ClusterName1.
FocInstanceName1 is the name of the SQL Server failover cluster instance that contains Node1 and Node2.
Note In this situation, the SQL Server failover cluster instance is a virtual server.
SqlInstanceName1 is the name of the instance of SQL Server on FocInstanceName1.
F: is the shared disk that is used as the data disk and as the log disk by SQLInstanceName1.
G: is an available shared disk that is needed to perform the migration.
You will use a domain user account that uses local administrative permissions and any required additional permissions to perform either failover cluster installations or SQL Server installations.
On a stand-alone clustered server or on a failover clustered server, you have already completed functional SQL Server 2005 SP2 testing and any post-SQL Server 2005 SP2 testing. The clustered servers on which you perform the testing are running the version of Windows Server 2008 that contains your SQL Server applications.
Before you start the upgrade on your production servers, test all the components and applications on a test cluster.
So that you do not lose data or configuration settings, perform a complete inventory of SQL Server instances, of Windows, and of resource groups on the cluster. Some things to consider are as follows:
In Windows Server, inventory all policies, users, user groups, and other user account features.
For SQL Server 2005, examine Add or Remove Programs for all installed SQL Server 2005 applications.
In Windows Server, review the Windows Clustering Resource Groups.
Determine your quorum type for the cluster on the Windows Server.
Make sure that you have done the following:
You have correctly backed-up all data.
You have performed full file-level backups of all SQL Server cluster drives.
You have performed full SQL Server-level backups of all databases for both SQL Server system databases and for user databases. To do this, run the following commands at the command prompt:
Type sqlcmd, and then press ENTER. This starts the sqlcmd utility.
Fully back up the user databases on Node2, type BACKUP DATABASE [userdb1] TO DISK = N’Z:\userdb1.bak’, press ENTER, type GO, and then press ENTER.
To restore the database on the new cluster, typeRESTORE DATABASE [userdb1] FROM DISK = N’Z:\userdb1.bak’ WITH NORECOVERY, press ENTER, type GO, and then press ENTER.
Set the databases as ‘read-only’ on the old cluster, typeALTER DATABASE [userdb1] SET READ_ONLY, press ENTER, type GO, and then press ENTER.
To make log backups of the databases on the old cluster, type BACKUP LOG [userdb1_log] TO DISK = N’Z:\userdb1_log.bak’, press ENTER, type GO, and then press ENTER.
To make backups of system databases on the old cluster, type BACKUP DATABASE [master] TO DISK = N’Z:\master.bak’, press ENTER, type GO, and then press ENTER.
Type BACKUP DATABASE [msdb] TO DISK = N’Z:\msdb.bak’, press ENTER, type GO, and then press ENTER.
Type BACKUP DATABASE [model] TO DISK = N’Z:\model.bak’, press ENTER, type GO, and then press ENTER.
To upgrade Node1, follow these steps.
Note When you perform this process, the server will incur periods of downtime. During this downtime, the servers and the applications will not be available to production until the processes are fully completed.
Fail over all services on Node1 to Node2.
Note This step will incur downtime.
Use Add or Remove Programs to remove all instances of SQL Server from Node1.
Use Cluster Administrator to evict Node1 from the Windows cluster:
Start Cluster Administrator on Node2.
Right-click Node1, and then click Stop the Cluster service.
Right-click Node1, and then click Evict Node.
Stop the cluster service on Node2, and then set the service to disabled.
Perform a fresh Windows Server 2008 installation. You will have to reconfigure any settings that are needed from your Windows Server 2003 installation. To do this, follow these steps:
On Node1, do a fresh installation of Windows Server 2008.
Migrate any user settings, users, and policies to Node1. This includes the following:
Computer name and Domain name
Account/Security Group (Add the domain user to the local administrators group.)
External disk (partition and drive letters)
Install any supporting software. This includes drivers and providers.
Migrate the Windows Server 2003 failover cluster disks to the new Windows Server 2008 node. Or, attach new SAN disks for failover cluster use.
Create a one-node Windows Server 2008 cluster on Node1:
Click Add feature on the Initial Configuration Tasks (ICT) console or on the Server Manager snap-in, and then select Failover Clustering to install.
Create a single node cluster by using the Failover Cluster Management console with Node1 by following the wizard that was started by the console.
Install SQL Server 2005 with clustering on Node1 as a new SQL Server Failover instance.
Important The new instance of SQL Server on Node1 must be installed by using the same drive letters as Node2.
Warning You must use the same data path that you use when you perform SQL Server system database backups.
To install SQL Server 2005 with clustering on Node1 as a new SQL Server failover instance, follow these steps:
Prepare your Failover Cluster to have a SQL Server Failover Clustered Instance installed To do this, follow these steps:
Right-click Services and Applications.
Click More Actions, and then click Create Empty Service or Application.
Note This should be your SQL Server cluster container.
Right-click the new container that you created, select Rename, and then give this a more meaningful and descriptive name that is associated with your SQL Server installation that you will be performing.
In the Failover Cluster Management console, make sure that your new SQL Server container is selected, and then click Add Storage under Actions.
Select the cluster drive for the instance of SQL Server to use. This cluster drive should have the same drive letter as the migrated instance. You can expand the available cluster disks to reveal the volume's drive letter.
Note Your failover cluster is now prepared to have a SQL Server failover clustered instance installed.
Install SQL Server 2005, and then install the database engine as a Clustered Instance on Node1.
When you are prompted, specify a new cluster instance name, such as FocInstance2.
When you are prompted, specify an unused, available shared disk, such as G:, for data files.
Keep the same SQL Server database instance name as before, or use the default name. For example, use SqlInstanceName1.
Install SQL Server 2005 SP2 and any SQL Server 2005 hotfixes that are recommended for Windows Server 2008.
Use either of the following methods to migrate data.
Note These methods are not presented in any particular order. You will have to determine which method is preferred for your environment.
Important Before you use either method, the current installation's NTFS permissions must be applied as soon as the data is in the new location.
Method 1: Transfer the complete disk volume
To transfer the complete disk volume, follow these steps:
Remove the disk resources, such as F:, from the SQL Server failover group on the old cluster:
Take the failover group of the instance of SQL Server offline.
Open the SQL Server resource Properties dialog box, click the Dependency tab, and then remove the disk resources that contain the dependent database files.
Open the SQL Server Fulltext resource Properties dialog box, click the Dependency tab, and then remove the disk resources that contains the dependent database files.
Remove the disk resource from the failover group.
Remove the drive letter of the disk.
Switch the disks on the new cluster. For example, switch the F: and G: drives. To do this, follow these steps:
Repeat steps 1a through 1e.
Add the disks that were used by the old cluster as the new storage.
Change the drive letter of the new storage to the one that was used by the instance of SQL Server.
Add the storage to the failover cluster group of the instance of SQL Server.
Set dependency from the SQL Server resource to the new storage.
Set dependency from the SQL Server Fulltext resource to the new storage.
Start the instance of SQL Server on the new cluster.
Method 2: Copy the complete DATA directory structure
On the server that is running Windows Server 2003, locate the Data folder on the previous installation.
On the server that is running Windows Server 2008, locate the new Data folder. This new data folder must use the same path that was used on the server that is running Windows Server 2003.
In the Failover Cluster Management console, take the new SQL Server failover cluster installation offline.
Rename the new Data folder to Data_New.
Copy the original Data folder that was determined in step 1 to the location that was determined in step 2. When the copy is complete, both the Data and the Data_New folders should be at the same folder level.
Change the IP Address and the Instance Name of the old instance of SQL Server 2003. For more information, visit the following Microsoft Web site: