The Very First Concern with SQL Virtualization: Licensing

Every single thing you do with a virtual SQL Server starts with one very important concern: how are you going to license it?

The 3 Common Ways to License Virtual SQL Servers

The software licensing section of my local library
The software licensing section of my local library

Developer Edition, by the guest – Developer Edition has all the power of Enterprise Edition, but it’s way cheaper – and starting with SQL Server 2014, Developer Edition is free. You’re just not allowed to use it for production purposes. Because the licensing is so cheap, just mix these VMs in with the rest of your non-SQL-Server guests on a shared pool of hosts.

Enterprise Edition, by the host – When you have 5 or more guests, it usually makes sense to buy a dedicated pair of host servers in an active/passive configuration. For example:

  • Dell R720 Primary – 2 sockets, 4 cores each, 768GB memory – ~$25k USD
  • Dell R720 Secondary – same hardware config – ~$25k USD
  • 8 physical cores of SQL Server Enterprise Edition licensing and Software Assurance – ~$55k USD (you only have to pay licensing on the physical cores regardless of whether you enable hyperthreading)
  • Hypervisor, Windows, management software licensing, shared storage – left as an exercise for the reader

You can configure your hypervisor (VMware, Hyper-V, Xen) to use one of the hosts as the primary, and when it fails, automatically boot up the guests on the secondary R720. This way, you only have to license one of the two hosts, and you can run an unlimited* number of SQL Servers on this host. (* – Not really.) Even better, even though they may be small VMs, you can still use Enterprise Edition on these guests and get access to cool EE-only features like online index rebuilds.

As your SQL Server needs grow, you can license the Secondary and balance the VM load across both, and even start to add additional licensed hosts. The key, though, is to avoid running any non-SQL-Server loads here because these are your utmost expensive host cores.

Standard Edition, by the guest – When you have 4 or fewer SQL Server instances, and they don’t need enough hardware horsepower to merit a dedicated host pool, then you’re usually best off licensing each guest with Standard Edition. This way, you can intermingle them on the same hardware that the rest of your virtual guests use.

At around $2k USD per core, it’s roughly 1/4 the price of Enterprise Edition, but you have to keep an eye on the number of virtual cores you’re using. You may read training material that says “just add vCPUs when you have performance pressure,” but this is expensive advice when you’re licensing each guest by the core. As you approach 16 vCPUs of Standard Edition licensing, you need to build a plan to migrate over to the host-based Enterprise Edition licensing approach. 28 vCPUs of Standard costs about the same as 8 vCPUs of Enterprise, but only the latter lets you run an unlimited number of guests, use over 64GB of memory on SQL 2012 and prior, do online index rebuilds, etc.

How Licensing Affects Your Administration

If you need SSRS, SSIS, or SSAS, and you’re licensing hosts with Enterprise Edition, you simply deploy these other services on separate virtual servers. You never make these other services fight with the core SQL Server engine for the same memory. However, if you’re on Standard, you saved money on licensing, but you spend extra performance troubleshooting time. You’ll need to install these services on the same VM as the engine to keep costs down, but you’ll need to understand how to triage performance.

When you design a high availability solution, the edition determines your choices as well. If you’re on Standard, and you need automatic failover for OS & SQL problems, you’ve backed yourself into a corner of either failover clustered instances or synchronous database mirroring. These solutions add complexity that shops without a DBA often can’t afford, so they end up going without OS/SQL protection and sticking with the simpler hypervisor-based failovers. On the other hand, once you’ve decided to license the hosts with Enterprise Edition, you can take advantage of AlwaysOn Availability Groups and asynchronous database mirroring without extra licensing costs – even for your smallest VMs.

Knowing your licensing means faster decision-making on architecture, and that’s why you want to start your virtualization projects here. Licensing is usually the most expensive and most restrictive part of the project – get it right first. To learn more about licensing SQL Server, check out the 2014 Licensing Guide PDF.

Your next concern with virtualization: recoverability.

Previous Post
Top 5 Tips for Your First Presentation (Video)
Next Post
Getting Started with Oracle

55 Comments. Leave new

  • You must pay for hyper-threading via an addition core in a virtual environment, but not on a physical OSE. Here’s the quote from the 2014 licensing document: “Note: The use of hyper-threading technology does not affect the number of core licenses required when running SQL Server software in a physical OSE.” You also cannot disable core’s at the physical level and not pay Microsoft for the core. I had to ask my Microsoft rep on that, as I thought I could grow into the box that way. We use the Cisco Blades, pay about $31K/box for the B200’s, fully loaded (20 cores/768).

    Buddy got audited from Microsoft, lets say they were very aggressive.

    • Jeff – that’s true when you’re licensing the guest with Standard, but not when you license the host with EE.

      Just to be really clear, re-read the quote from the licensing document this way: Whether you enable or disable hyper-threading, the core license count isn’t affected. It’s still just the number of cores in the processors.

      • Brent, I read it that way too, and was told differently by my Microsoft and Insight.

        Here is the quote I got from Microsoft (Please note the context was always EE being hosted on ESX and each box fully licensed, but at the time was for SQL Server 2012 EE, told nothing changed for 2014 on this):

        “Also can you clarify the licensing on Intel Hyperthreading?

        When hyper-threading is turned on, a core license is required for each thread supporting a virtual core. Conversely, if a single hardware thread is supporting multiple virtual cores, a core license is still required for each virtual core. (pages 5 and 6)”

        At this point I’m going to need a letter from Microsoft on letter head to turn it back on.

        • Yeah, I would want that in writing from MS. That goes against what the guide says.

        • I have wondered if using multiple named instances of Standard Edition would be reasonable (performance and price) option.

          I you have 8 to 16 cores and 768 GB RAM it naively seems that one could run perhaps 8 or 10 named instances as long as the supported DB’s did not require EE features.

          I know storage management is going to be a hassle but if the infrastructure is relatively stable it might not be too bad.

          Perhaps one could use Processor Affinity to distribute and isolate the instances a bit.

      • I just spoke with Microsoft about this yesterday, and was told the same. That hyperthreaded cores must be licensed if the server is going to be a VMware, HyperV host.

        Is the additional benefit of hyperthreading the CPU’s worth the cost? If we have a 2 proc, 6 core box, that’s 12 physical cores, or 24 with hyperthreading enabled. would it make sense to disable hyperthreading in order to get the full power out of each core? What type of impact does that have on overall performance, NUMA Nodes, etc?

        • Philippe Stern
          October 7, 2014 4:34 am

          Found in the October 2014 version of the Microsoft PUR (that you may found here:

          from Appendix 2: Software Assurance Benefits :
          “SQL Server 2014 Enterprise and Biz Talk Server 2013 Enterprise — Unlimited Virtualization

          For each server to which you have assigned the required number of licenses as provided in the “Physical Cores of a Server” section, you may run on the licensed server any number of instances of the server software in any number of physical and/or virtual OSEs, provided you have active Software Assurance coverage for those licenses.”

          from Licensing Models for SQL Server 2014 Enterprise Core
          Microsoft Servers – Per Core (Core License)
          under the section Licensing by Physical Core on a Server :
          “1. The number of licenses required equals the number of Physical Cores on the Licensed Server multiplied by the applicable Core Factor located at”

          I maybe miss the point, but from my point of view hyper-threading does not impact the licensing in the Unlimited Virtualization model.

          By the way (the definition of Physical Core and Physical Processor also provided in the PUR):
          – Physical Core means a core in a Physical Processor.
          – Physical Processor means a processor in a physical hardware system.


  • In SQL 2014, you can license Enterprise Edition by the number of Virtual Cores of the *Guest* VM. So if you don’t need all the Power of a physical host, but he have the need for Enterprise Edition, you can do Virtualized without Licensing the whole host.

    • Michael – can you elaborate more about a situation where you would need Enterprise Edition, but only one virtual machine, and not need an entire host? Thanks!

      • Sure, we do have some Databases which we keep in an AlwaysOn Availability Group. They are pretty small, 20-50 GB in size. We currently only require 4 vCPU to keep them running at good speed. Our virtualization hosts are quite OK, but will even be more powerful in the near future (2x 12 Cores with >384 GB RAM).

        We could run the VM’s on small physical hosts – definitely. But for us it makes more sense to run them as VM’s together with the rest of the pack.

        • Michael – gotcha. I haven’t seen that as particularly cost-effective – usually companies are much better off sticking with Standard Edition HA features on databases of that size, like a failover cluster or synchronous database mirroring. But if you’re willing to spend the extra ~$25k in licensing, that’s good for you!

          • Yes, you are right. It may very well be that this changes once we have to actually pay for the cores. (We are a Microsoft Gold Partner and get a bunch of Core Licenses with that for free)

          • Uh, hello. Yes, if you get free licensing, then it makes sense to run Expensive Edition on a per-VM basis. 😉 For the rest of the world, not so much.

  • Philippe Stern
    October 7, 2014 4:18 am

    Hi Brent

    I quote you: “You can configure your hypervisor (VMware, Hyper-V, Xen) to use one of the hosts as the primary, and when it fails, automatically boot up the guests on the secondary R720. This way, you only have to license one of the two hosts”
    Where did you find the proof of this ? How do you know that you only have to license one of the two host in the Enterprise Edition unlimited virtualization model ?

    Thank you

    • Philippe – just so I understand the question, you’re asking me where I found proof that you don’t have to pay licensing for machines that you’re not currently running SQL Server on.

      I gotta be honest – I’m gonna have a tough time tracking down proof for that answer. 😉

      • Philippe Stern
        October 8, 2014 2:16 am

        Haha ok. Fair enough !
        You may stop searching 🙂

        Thank you for the time you spend for answering me.

  • Hi Brent! I’ll see you at Relativity Fest! 🙂
    Just wanting to comment – we’re doing this right now, as we have Standard (and some random enterprise for some reason – which is unneeded – but most was installed before I worked here 1 year ago) spread out among like 5 physical clusters (all sql is virtual) – we’re going to consolidate to one cluster of physical for ONLY SQL

    I assumed that we’d need to license BOTH physical hosts – if they could fail over – but, reading what you’ve written – as long as we keep the VM’s ONLY running on one physical host at any one time, we only need to license that for Enterprise…..and then obviously our secondary cluster which we’ve love to use with ALWAYSON. …. This is making more sense – but why MS has to make this SUCH a hassle… is beyond me. $$$$

  • We are taking advantage of failovers.
    With SA coverage, you can fail over (then back) between your primary licensed server and fail over server as often as needed, without regard to the 90 day limit.
    We use max virtualized one host, filled it up with VMs. Now we build new SQL VMs on a second unlicensed host and call these VMs as “they just failed over”

  • Hi,

    I saw you in Copenhagen, thanks for an interesting lecture.

    I have a heated discussion with a license expert, regarding SQL development edition on VM. My understanding is that as long as the SQL server is used for test and development then the VM can be on any host using SQL development edition (OS is fully licensed).

    The license expert says that we need to have one VM environment for production servers and a separate VM environment for our development servers. “We are not allowed to use development licenses on a production environment” – environment being the VM box.

    What are your opinion about this?

  • Hi Brent
    We are planning for consolidation on SQL 2014 – all virtual – some on HA/Always on with primary + readable secondary (for reporting purposes) + async disaster recovery. Primary and Secondary instances on datacenter 1 on different hosts, synchronous – and DR instances on datacenter 2, asynchronous.
    So we need to license both Primary and Secondary.
    For this consolidation we are looking for hosts with few cores and tons of memory + FusionIO and a wish for all flash storage (this we might not have to begin with). To consolidate as much as we need to save on licenses we really need super fast I/O to be able to utilize the CPUs.
    We have 800 DBs – all sizes – demand for HADR for most, so we need the Expensive Edition.
    We think of utilizing both DC1 hosts for Primary and Secondary instances – one VM DB Server to host 3-6 instances.
    In the future we might balance the load between DC1 and DC2 and eventually pay licenses on DC2 as well.
    Long story short: Can you recommend servers for the hosts – where it is possible to utilize a lot of memory for fewer kernels? – and if we get a host with many kernels, can we eliminate/disable some of these to avoid the license and still use all available momory?
    Right now we have 96 kernels on mostely older versions(2005 to 2012) = cheaper licenses, but with the 2014 license explosion we want to consolidate on half number of kernels or even less if we can 🙂

    • Bjarne – absolutely, I do a lot of hardware recommendations for our clients. If you’d like personalized server recommendations for your business needs, contact us and we can talk about what a consulting engagement looks like. (Picking someone’s exact make/model of server is a little beyond the scope of something I can do in a blog post comment.)

  • Brent,

    I can’t find any specific cases in the Microsoft licensing guides on not licensing the passive VM Host for VMWare HA. They do spell out that you can have a SQL Server installed and synchronizing that is not doing “Work” – we all know that – but it’s not quite the same thing. I see the passive VMware node as reasonable, but I need to get details, because I’d like to take it to the next level and mirror or log ship to another SQL Server somewhere else off the VM host infrastructure.

    Any experience with this?

    This is also hilarious –
    The support and licensing guide – at the very end in the licensing section, they refer you to Microsoft, because licensing is hard!

    Thanks for sharing,

  • Hi Brent,

    From a Price vs. Performance perspective, is it worth putting multiple enterprise licences on one server?

    For example, three enterprise instances on a 1 Socket 8 Virtual Processor machine?


  • with maximum virtualization licensing model, if I pay for EE on all physical core on physical server I can virtualize all the sql server I want;
    if I want to have a second hardware server running running only standby sql servers (mirroring data from the sql on the licensed server, but not receiving queries) I have to pay for licenses even on the second hardware, or it’s covered by licenses on the first hardware, as all the vm in the second hardware does not receive queries?
    if I license virtual cores on virtual machine, the second vm will not pay, but is it the same if I license physical cores on the physical hardware?

    • Ebi – in theory, you wouldn’t have to pay for the second hardware server.

      In reality, you’re going to have failovers back and forth, right? After all, the whole reason you’re building a high availability setup is because things fail. In that case, you’re going to end up paying for both, because they’ll both have live running production servers on ’em.

  • Hi Brent,
    as I understand, you are suggesting to mix production VMs and SQL covered by MSDN licesning VMs on the same host.
    My understanding is that according to MSDN licensing you must setup a dedicated host(s) for any VMs running any SW licensed under MSDN.
    Could you please elaborate on your statement?


  • I have 4 esx server hosts with V-Motion enabled. There are both enterprise and standard VMs on these hosts
    Can I go ahead and count the cores for the EE VMs and license them separately for EE and the remaining std VMs in the server-cal model? Or since it’s a mixed environment, should I consider everything for EE licencing? Also advice me if there is anything to be considered in the v-motion enabled scenario

    • Don – personalized license guidance across lots of VMs and hosts is beyond something we can do in a blog post comment. That’s where consulting starts to come in. Licensing gets pretty expensive fast – I’d hate to miss a crucial point in the quickie blog post comment answer and cost you hundreds of thousands of dollars.

  • Hi Brent,

    From what I read, hyper-threading only affects core licensing when it is at the virtualisation level.

    Based on this entry it seems like it doesn’t.

    If we go by MS documentation then if i were to license a VM that has 1 vCore that’s mapped to 8 physical core then I’ll need 8 core licenses. If hyper-threading is turned on on all 8 cores, then that means 16 core licenses. Personally it doesn’t make sense for them to count licenses that way…

  • Brent,
    I have a unique question. We currently have 2014 SQL EE on a 8 core server call it Server A. We also have another server with 2008R2 EE but with dual 12 cores (24 total) Server B. The 2008R2 server is not being used and doesn’t have SA. We need a backup server for Server A. We plan on installing VM on Server B. On the VM install 2014 SQL EE using the license from Server A (meaning we would only use 8 cores out of the 24 physical cores. Turn off the VM totally and only use it when Server A has a failure that requires hardware to be replace or something else causing the Server A not to be able to be used.

    Is that allowed?

    We don’t need to have the VM online to copy backups, data, etc to. This is mainly a SSAS server and we can setup the VM with SSAS, SSIS, SQL Server, SQL agent Jobs, Etc turn it off. Copy backup files to the hose Server B and once VM is needed start it up and copy backup files from Server B to VM. Server A would be offline and being repaired.

  • Hi Brent,
    How’s different between SQL EE on 1 Vcore VS 2 Vcore in 1 Guest on VMware ? because 1 Vcore is running on among all Physical Cores. Is it would be help on SQL license to save cost ?

  • Gavin Fuller
    July 24, 2016 4:53 pm

    I notice a reference from Microsoft that you can’t use production data for the developer edition. Ignoring the issues with using production data for test/dev purposes does this in fact mean you can’t use old production data at all in this edition?

    At least it might start to force some businesses to revise their test data plans!

  • Hi Brent,

    I think I somehow know it already, because it makes sense to me, nevertheless I couldn’t find it anywhere written black on white. Is it true that using per-core licensing for VM’s means you may have any number of SQL instances installed on one VM guest and license only number of vCores? Or every installation (named instance) needs to be licensed separately. Thanks.

    • Yes, just like physical boxes, you can pack ’em in like clowns into a car, but performance and troubleshooting and outage planning is awful.

      • I know, actually this is what I am fighting against for a long time. However this time I have plan to install one additional almost-passive named instance on every VM guest because of backup verifications (using NetApp). So I was just wondering whether I didn’t miss anything from the legal perspective. Thank you.

  • if we need to install/provision SQL 2008/2012 Developer in my environment , do I need to license it now that SQL 2014/2016 developer edition is free of cost

  • Very nice information

  • Hello Brent,
    I’ve found next suspicious statement in SQL 2017 licensing guide:
    “Note: License Mobility applies only to the reassignment of software licenses and is not applicable to the reassignment of running instances of SQL Server software.”
    Does it prohibit scenario when all VMs run on one ESXi host (perCore licensed with unlimited EE virtualization) and standby ESXi host are license free?

    • Marat – for licensing questions, you’ll want to check with Microsoft.

      • Sure, Brent
        But I mention it because this suspicious “Note:” possibly affects your article scenario – “You can configure your hypervisor (VMware, Hyper-V, Xen) to use one of the hosts as the primary, and when it fails, automatically boot up the guests on the secondary R720. This way, you only have to license one of the two hosts, and you can run an unlimited* number of SQL Servers on this host. (* – Not really.) Even better…”


Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.