SolutionBase: Upgrade SQL Server to a Windows Server 2003 system

See how one administrator moved his two-node SQL Server cluster to WS2K3 for performance gains.

If you're a database administrator, your normal workload may not include upgrading operating systems on your database servers, but with the performance advantages gained by upgrading a SQL Server database server to Windows Server 2003, you may soon see this moving up your task list.

There are multiple benchmarks available to show the upgrade benefits (here is one of Microsoft's benchmarks), but I can verify that I instantly saw an approximate 25 percent performance increase on IO-intensive jobs after this upgrade. Luckily, this upgrade was almost as painless as Microsoft would lead you to believe. I'll show you the process I went through in upgrading SQL Server on a two-node cluster from Windows 2000 Advanced Server to Windows Server 2003 Enterprise Edition.

The first thing you need to know is that you must be running SQL Server 2000 Service Pack 3 before you upgrade. Previous versions of SQL Server, such as 7.0 and 6.5, are not compatible with Windows Server 2003 and are not supported by Microsoft. I've heard several people touting success stories of running SQL Server 7.0 on Windows Server 2003, but this is not an option I would recommend in a production environment.

The first item on your checklist needs to be the verification of Windows Server 2003 support for all of the hardware and drivers on the database server. Most vendors have their support listed on their Web sites. If you cannot find support for Windows Server 2003 listed on the company's site, you should contact the company directly to verify support. This is a very important step, since one driver causing problems can lead to your entire upgrade failing, or even worse, the upgrade may appear to work but the incompatibility will cause a myriad of unexpected issues after the upgrade.

The next item on your list needs to be your disaster recovery strategy. This can be the single most important part of your upgrade. At a bare minimum, you must back up all of your production databases and any other production data on the server. Other than that backup, I strongly recommend using Symantec Ghost, or other disk cloning software, to take an image of your systems immediately before upgrading. This can be a great time-saver in the event of a needed recovery, and is definitely worth the time and cost should that need arise.

Performing the upgrade
There are two available paths you can choose to upgrade your cluster, though they both involve identical steps. The only difference is the amount of time you wait between upgrading nodes. The "one node at a time" method gives you the option of upgrading one node of your cluster, and then moving your cluster resources slowly to the other node to measure performance and stability. While I see this as the preferential option, since it allows you to have one known good node at all times, it does give you a limitation in that you cannot create cluster resources while in mixed mode.

If you cannot afford losing the ability to create cluster resources, you can immediately upgrade your second node after completing your first to perform a "two-node migration." Again, the difference between these is minimal, and your choice is limited only to your environment.

The instructions for the operating system upgrade from Windows 2000 to Windows Server 2003 can be found here. This document also gives you information on the Application Compatibility Toolkit. This free kit from Microsoft contains several tools that can help your upgrade go a bit smoother. However, the tool in this kit that could be the biggest asset to you is the Application Verifier. The Application Verifier can be used to check any custom applications you have to verify their compatibility with Windows 2003 Server.

Upon completing your OS upgrade and applying all current hot fixes, the first thing you need to do is transfer a SQL Server instance to the active node. Once this is done, you need to immediately begin verifying the processes that run on that SQL instance. One of the first things you can do is run any scheduled jobs you have on that instance, and look for any abnormalities in your results. Following that, if your instance is involved in replication, you will need to verify that it is working properly. Finally, begin running several of your user processes to see if you notice any abnormalities in them.

After you're satisfied with the results on your newly upgraded node, you must make your decision on when to upgrade your other node. I recommend waiting at least a few days, if your environment allows it, to verify that everything is fine. Once you're ready, roll all your cluster resources to your Windows Server 2003 node, and begin the upgrade process on your second node. One thing to watch out for is that all of the hardware, drivers, and software on that node are identical to those on the other node. If not, you will need to verify compatibility on anything that is different.

Once the upgrade is complete, you should immediately begin seeing a performance increase in your most IO-intensive processes. As mentioned earlier, I immediately recognized about a 25-percent speed increase on my IO-intensive jobs. This alone made the entire upgrade to Windows Server 2003 worthwhile. The prep work before the upgrade can be somewhat tedious, but it will pay off when the upgrade itself goes off without a hitch.