Per core licensing - Virtual

  • Hi,

    I went through a big license audit many years ago (from a re-seller via MS) and the outcome was that it was "per-core, per-instance"). So:

    12 core VM, running 3 instances with all CPUs available to each instance would require 36 cores. Or fine-tune each instance core count to keep to no more than 12, so for simplicity: 4 cores per instance X 3 instances = 12 cores

    I need to revisit this now and a quick google suggests the above was either never the case, or was and still is!

    Any one have a definitive answer?

  • PS: This is specifically related to SQL Standard, not Enterprise.

  • its not per instance you only license the VM (or physical server ) - for SQL Standard on a VM environment you license all vcores on that VM (minimum of 4) - you can have multiple instances on that same VM

    see http://download.microsoft.com/download/7/8/c/78cdf005-97c1-4129-926b-ce4a6fe92cf5/sql_server_2017_licensing_guide.pdf for 2017 guide

    or file:///C:/downloads/SQL%20Server%202019%20Licensing%20guide.pdf for 2019

  • Thanks. I've read the 2016 guide and the only time it mentions "unlimited instances" is:

    Allows customers to run any number of instances of SQL Server 2017 Enterprise Edition

    Each server license allows customers to run any number of SQL Server instances in a single OSE, either physical or virtual <-- this on the Server+CAL model, not per-core

    Microsoft SQL Server is increasingly being deployed in virtualized environments, which enable running instances of SQL Server concurrently in separate virtual OSEs (or virtual machines) <-- one VM = one OSE, not separate

    With SQL Server 2017 Enterprise Edition, customers who have licensed all physical cores on the server can run an unlimited number of instances

    With the addition of Software Assurance (SA) coverage on all Enterprise Edition core licenses (for a fully licensed server), customers’ use rights are expanded to allow any number of instances <-- SA not in place

    This one is ambiguous to me:

    Similar to the Per Core licensing model in physical OSEs, all virtual cores (v-cores) supporting virtual OSEs that are running instances of SQL Server 2017 software must be licensed accordingly

    • This reply was modified 4 years, 8 months ago by  lanky_doodle.
  • lanky_doodle wrote:

    With SQL Server 2017 Enterprise Edition, customers who have licensed all physical cores on the server can run an unlimited number of instances

    (First, a disclaimer.  I'm not by any stretch of the imagination, a MS Licensing expert.)

    I've always read this particular bit of licensing to indicate that if you license all the cores in the physical host, that you could then stand up (on that host) as many VMs with SQL Server as you desire / your hardware will support.

    I've also always understood the licensing, when it comes to multiple SQL instances within the same OS (physical or virtual) that you can "stack" as many as you want.

    So, in the first case, if you've got a physical server with 48 cores running your virtualization environment of choice, and you purchase sufficient SQL core licenses for all 48 cores, you could install 200 VMs, each running SQL Server and be compliant.

    In the second case, if you've got a server (core count doesn't matter) with sufficient SQL core licenses for it, you can install 200 instances of SQL Server on it and be compliant.

     

    But don't take that as the actual case, find yourself a MS Licensing specialist and verify.  Or come back and tell me I'm full of solid waste and how it actually works, I'm OK with that.

  • As with all things licensing, you need to speak to your reseller or Microsoft, never take public word as fact

     

    With that bit out the way how I read the licensing document is that as long as the cores are licensed, then you can go to the max available

    So if you have a VM with 12 cores and licensed for Standard edition, you can install up to 50 instances of SQL on that same VM at no extra cost.

    Now should you install 50, hell no, should you install 2, well that's a discussion.  Remember SQL is designed to think it's the only thing on the box, so you have to plan CPU, RAM, DISK etc into every multi stacked instance deployment.  Personally for me its always a 1 to 1 relationship.

     

    Where "unlimited instances" comes into play is if you license the hypervisors for Enterprise you can scale up as many VM's on the hypervisors as you can handle, install SQL Ent/Std depending what you need (hell you paid for Ent for the hypervisors, you may as well install Ent and get the benefits right?) on those VM's and away you go.

    Now that can get costly and you have to factor in things like failovers to other hypervisors etc on that, so most shops I been in have a dedicated hypervisor cluster for SQL VM's which is all licensed to the hilt and they can run in a N+1 setup as to what the load can take.

     

    Again, speak with Microsoft and/or your reseller, they hold your specific licensing information and will be best placed to say how licenses need to be purchased for your agreements.

  • Thanks. I'm not sure I buy the "talk to MS/licensing reseller" mentality - they're the ones who told me 'per core, per server'! 🙂

    Totally agree with this though:

    "Now should you install 50, hell no, should you install 2, well that's a discussion.  Remember SQL is designed to think it's the only thing on the box, so you have to plan CPU, RAM, DISK etc into every multi stacked instance deployment.  Personally for me its always a 1 to 1 relationship."

    The eventual config is for the customer to finally decide on; I've already advised based on the above.

  • A very good article on this subject is:

    https://www.brentozar.com/archive/2019/09/dba-training-plan-19-the-l-word-licensing/

    I agree with Anthony too...the reseller or MS is the definitive source of truth as they are the ones who may do the audit for license compliance.

    Alan H
    MCSE - Data Management and Analytics
    Senior SQL Server DBA

    Best way to ask a question: http://www.sqlservercentral.com/articles/Best+Practices/61537/

  • lanky_doodle wrote:

    Thanks. I'm not sure I buy the "talk to MS/licensing reseller" mentality - they're the ones who told me 'per core, per server'! 🙂

    Totally agree with this though:

    "Now should you install 50, hell no, should you install 2, well that's a discussion.  Remember SQL is designed to think it's the only thing on the box, so you have to plan CPU, RAM, DISK etc into every multi stacked instance deployment.  Personally for me its always a 1 to 1 relationship."

    The eventual config is for the customer to finally decide on; I've already advised based on the above.

    Per core per Server is not the same as  "per-core, per-instance" as you mentioned on your first post.

  • jasona.work wrote:

    lanky_doodle wrote:

    With SQL Server 2017 Enterprise Edition, customers who have licensed all physical cores on the server can run an unlimited number of instances

    (First, a disclaimer.  I'm not by any stretch of the imagination, a MS Licensing expert.)

    I've always read this particular bit of licensing to indicate that if you license all the cores in the physical host, that you could then stand up (on that host) as many VMs with SQL Server as you desire / your hardware will support.

    I've also always understood the licensing, when it comes to multiple SQL instances within the same OS (physical or virtual) that you can "stack" as many as you want.

    So, in the first case, if you've got a physical server with 48 cores running your virtualization environment of choice, and you purchase sufficient SQL core licenses for all 48 cores, you could install 200 VMs, each running SQL Server and be compliant.

    In the second case, if you've got a server (core count doesn't matter) with sufficient SQL core licenses for it, you can install 200 instances of SQL Server on it and be compliant.

    But don't take that as the actual case, find yourself a MS Licensing specialist and verify.  Or come back and tell me I'm full of solid waste and how it actually works, I'm OK with that.

    unfortunately licensing for the physical server when dealing with virtualization is only available on the Enterprise license.

    If using Standard the only option is to license the VM itself as the documents I posted clearly state

  • frederico_fonseca wrote:

    unfortunately licensing for the physical server when dealing with virtualization is only available on the Enterprise license.

    If using Standard the only option is to license the VM itself as the documents I posted clearly state

    I'll be honest again, I was working from memory and didn't pop open the guides you linked (and in glancing at the guide for 2017, you are absolutely correct, mea culpa)

    🙂

  • frederico_fonseca wrote:

    Per core per Server is not the same as  "per-core, per-instance" as you mentioned on your first post.

    Sorry that was a typo. Definitely was "per core, per instance". I can remember that phrase like it was yesterday!

Viewing 12 posts - 1 through 11 (of 11 total)

You must be logged in to reply to this topic. Login to reply