Editorials

Reader Feedback – Deploying Multiple Instances of SQL Server on a Single Machine

Reader Feedback – Deploying Multiple Instances of SQL Server on a Single Machine

Responses from two of our readers today regarding multiple instances of SQL Server on the same machine remind us to review the licensing agreements as part of your consideration for setting up your deployment strategy. Different versions of SQL Server have different ways they have been licensed throughout the years; so be sure your deployment fits your licensing scheme specific to the versions deployed.

Maurice:

I read your article and I would like to add some precisions.

If you are using a per-core licence, as long as instances are installed side by side into the same windows server (being virtualised or not), you don’t have to buy more licenses.

This makes sense because Microsoft says that licensing is based on computing power and if you add another instance, you shared cores you already licensed. It doesn’t add computing power.

If you run SQL Server instances on separate windows servers (virtualized or not) you need more licenses. On important exception about this is with Entreprise Edition and virtualized servers. If you license all possibles cores of the host, you can deploy any number of virtual windows servers and instances under that host. Same principle again, by doing this you don’t get more processing power over what you already licensed.

Beware something about licencing : Sometimes even people at Microsoft don’t understand the case of multi-instance licencing on the same windows server with the specific case of per-core licencing model. I remember a few years ago having a discussion with a Microsoft representative and I need to point out to him, in their own licensing document, that it was allowed. He finally agreed that this was the correct interpretation.

Here is the link about their actual licensing document.

http://download.microsoft.com/download/7/3/C/73CAD4E0-D0B5-4BE5-AB49-D5B886A5AE00/SQL_Server_2012_Licensing_Reference_Guide.pdf

About tcp/ip port and isntances, since SQL2000, SQL Server always allocate them automatically for any named instances. If it would not be the case then after an install, SQL Server Engine would simply be not reachable. If you want to force the use of a specific port for a given instance, you have to find one that is free and force its use through SQL Server Configuration Manager/SQL Server Network configuration to specify it for a given instance.

Carm:

Nice article. Many folks don’t realize the benefits of this technique. At some clients I have seen machines with different versions of SQL Server, SQL2005, SQL2008, SQL2008R2 and SQL2012 running side by side on the same physical, not virtual Window 2008 machine. These were large multi-core (24) machines with 64GB ram, but depending on the load you could do with less. We set max memory for each instance (based on load) leaving the OS with about 10% for its own use and set Max DOP to limit CPU hogging. These are separate installations and can coexist independently. This includes PATCHING. The caveat is that when the MAJOR VERSION number is the same (as with SQL 2008 and SQL 2008R2), the Shared tools belong to the highest version. SSMS, SNAC, etc are SQL2008R2 versions. Also, there is only one version of SSIS and that’s the one you choose.

On the flip side I have seen both physical and virtual configurations that over commit resources where each instance is given more RAM or CPU in total than exists in the environment. With Virtual Machines this is a common practice and can work well when configured correctly. Make sure the VM instances do not over commit too much thought. However, to make this work you must cap SQL Server memory and CPU use and reserve resources some for the host OS. Its like the old adage "When Momma’s not happy, nobody’s happy". When WINDOWS is short of resources EVERYTHING runs slow.

Lastly, when running multiple instances of the SAME version and edition on a single machine, you only need once license. This is from SQL2008 BOL:

"The Microsoft Software License Terms are copied to the local computer when SQL Server is installed. When multiple instances of the same edition and language of SQL Server are installed on the same computer, a single copy of the license terms will apply to all instances of that edition and language. The files are written to: %ProgramFiles%Microsoft SQL Server100EULA or %ProgramFiles(x86)%Microsoft SQL Server100EULA."

Remember the actual licensing terms are different for each version of SQL Server (cores, cals etc) and that SQL2012 change substantially. Check the Microsoft website or the EULA information on the installation media or actual installation location as above. However multiple copies of the same version/edition on the same Windows server holds true.

Thanks for the feedback folks.

Cheers,

Ben