Microsoft recently changed its SQL Server licensing products, prices and policies under virtualization. The SQL Server licensing is now similar to the Windows Server licensing in the sense that there are three flavors of SQL Server: Standard, Enterprise and Datacenter, and as with Windows Server Enterprise, the Enterprise license allows 4 instances of SQL Server (either Standard or Enterprise) while the Datacenter Edition allows unlimited instances. (Note that under the CPU licensing model, SQL Server Enterprise must be licensed for all of the physical CPUs in order to allow the 4 instances). Both Datacenter Editions (Windows and SQL) are only licensed by CPU, and both require a minimum of two physical CPUs. Both products must be licensed for all of the physical CPUs on the virtualization host.
There are also important differences. While Windows Server requires CALs, SQL Server, when licensed by CPU, does not. Windows Server Datacenter pricing at $2,999 per CPU is in the ballpark of Windows Server Enterprise which lists at $3,999 per server including 25 CALs. SQL Server Datacenter, on the other hand, costs $54,990 per CPU (without SA) which is twice the $27,495 cost per CPU for SQL Server Enterprise.
Another important difference involves licensing for migrating SQL virtual machines between virtualization hosts whether using VMware VMotion, Microsoft Live Migration or Citrix XenMotion, something Microsoft refers to as Application Server License Mobility. With Windows Server, each CPU on every host in the cluster must be licensed if a VM is moved more than once within a 90 day period. With SQL Server Enterprise or Datacenter Edition, however, running instances can be migrated as needed across servers within a server farm – there is no 90 day minimum period before reassignment. The caveat is that for SQL deployments licensed under the Per CPU licensing model, the number of CPUs on the target host cannot exceed the number of CPU licenses.
Optimizing SQL Server Licensing for a Virtualized Environment
In a physical world, many disparate servers running either SQL Server Standard or SQL Server Enterprise leads organizations to frequently license SQL Server by the Server/CAL model. The relatively small number of hosts of a virtualized data center (vDC) generally makes the CPU licensing model preferable.
An important exception is an organization running a single instance of SQL Server Enterprise and three or less instances of SQL Server Standard on a 2-CPU server. Purchasing two licenses of SQL Server Enterprise to cover both physical CPUs of a virtualization host would be more expensive than running the instances physically. Licensing costs equivalent to the physical scenario can still be achieved by licensing only the portion of the physical processor actually used for the Enterprise instance. This scenario is explained in more detail below.
The ability to consolidate multiple SQL instances onto a single host combined with application server license mobility rules generally make either SQL Server Enterprise or SQL Server Datacenter the best choice for a vDC. A 2-CPU VMware vSphere host, for example, running two licenses of SQL Server Enterprise could run up to eight instances of either SQL Server Standard or Enterprise. Additionally, these instances can either be VMotioned to another host in the cluster or even utilize the continuous availability of vSphere Fault Tolerance without requiring additional SQL licensing for the target host.
An organization running no SQL Server Enterprise and less than eight instances of SQL Server Standard on a 2-CPU server will spend less by purchasing just the SQL Server Standard licenses. Of course, other criteria may warrant instead purchasing two copies of SQL Server Enterprise such as a desire for VMotion, HA or Fault Tolerance as well as to take advantage of the enhanced capabilities of SQL Server Enterprise or to allow for expected SQL Server application growth.
Calculating the optimal type and number of SQL Server licenses can be complex, particularly with a mix of SQL Standard and Enterprise instances. This updated on-line calculator (or the Excel version) provides the lowest-cost licensing option for SQL Server when licensed by processor on a 2-CPU virtualization host.
The calculator assumes that new licenses are being purchased. If an organization has already purchased SQL Server Enterprise with SA prior to May 1, 2010, it has the grandfathered right to run unlimited instances of SQL Server VMs, "as long as Software Assurance coverage remains active and until the SQL Server version that follows SQL Server 2008 R2 is generally available".
Special Case: SQL Server Enterprise Licensing by Processors Used for SMBs
If an organization has only a few instances of SQL Server, with one of them being Enterprise, it has the option to license Enterprise by Processors Used. In this case, as long as the SQL Enterprise guest is only using a single virtual processor, then only one SQL Server Enterprise processor license is required for the Enterprise guest. SQL Server Standard licenses are still required for each guests running SQL Server Standard. Another option to potentially reduce licensing costs is to utilize the server/CAL licensing model instead of the per CPU model. A third option would be to use a virtualization host with only one CPU; the SQL Server Enterprise license would then also accommodate an additional three instances of SQL Server Standard.
Acknowledgements/Disclaimer: I would like to thank the Microsoft licensing specialists at both Ingram-Micro and Microsoft for their extensive assistance in understanding the new licensing rules. Any errors in either this post or in the calculator, however, are mine and mine alone.