• Hi Phil,

    I am hoping I can help and I am hoping I can save you a lot of money on your Enterprise licence purchases, and also in relation to Software Assurance renewal in the future as I suspect you may have about 56 Standard Core licenses more than you need!

    ... I appreciate this topic is complex! Sorry that my response is rather long, but there is a lot of detail to explain and the more I typed, the more details I realised I needed to tell you! If you want to shoot directly to the bottom I have answered each of your questions ... but I have started with other details to help explain first...

    Firstly, here is your environment as I understand it (please let me know if I have misunderstood)

    You have 2 Clusters, DC1 & DC2

    DC1 is made up of 2 hosts, each host has 2 physical processors and each physical processor has 10 cores. Total of 4 processors and total of 40 cores.

    DC2 is made up of 2 hosts, each host has 2 physical processors and each physical processor has 10 cores. Total of 4 processors and total of 40 cores.

    There are a total of 16 SQL Server instances. 8 are production (active) and 8 are DR (passive instances). Each cluster runs 8 instances (4 production and 4 for DR).

    Each individual host runs 2 production instances (these all need to be licensed of course) and each individual host runs 2 DR instances (whilst these do need to be licensed, passive instances can be licensed via the licence that covers each active instance ...the Microsoft Product Use Rights document ... which contains Microsoft licence terms refers to these passive DR instances as failover instances. Those failover instances are permitted to be run on separate hosts from the active instances and can also be in a separate cluster as you have done with yours.

    So long as you are purchasing Software Assurance for each SQL licence ... which you are doing via your Enterprise Agreement, we only need to worry about directly licensing each of the active instances.

    I am assuming that all instances are running in Virtual Operating System environments.

    I will answer your questions directly inline below but first let me point out some licensing rules and options first;

    For both SQL Server version 2014 and 2012 ...and for both Standard and Enterprise Edition of both of those versions the following licensing rules/options apply;

    There are two types of environments in which SQL Server instances can be run, Physical Operating System Environments (POSE) and Virtual Operating System environments (VOSE). The licensing requirements can be impacted by which type of environment SQL Server is running in ... I will explain further below.

    SQL Standard licenses allow you to run Standard edition but do not allow you to run Enterprise Edition (that rule applies to SQL 2014 licenses as well as SQL 2012 licenses)

    SQL Enterprise licenses allow you to run Enterprise edition, and also Standard edition (again the rules apply to SQL 2014 and SQL 2012 licenses). So you can buy Enterprise licenses and run SQL Standard if you like, but you can not buy Standard licenses and run Enterprise Edition.

    For any instances deployed in a Physical Operating System Environment you MUST acquire licenses based on the number of physical cores in the physical hardware of each host. So if you had one or more instances of SQL Server (regardless of whether they are Standard or Enterprise Edition), you must first count the number of physical cores in the server. Once you have counted the physical cores in the server, you must multiply the number of cores by a core factor which Microsoft has available on their website... here are the current core factor rules...

    Core factor of 1must be applied to all processors not mentioned below

    Core factor of 0.75 must be applied to all AMD 31XX, 32XX, 33XX, 41XX, 42XX, 43XX, 61XX, 62XX, 63XX Series Processors with 6 or more cores

    Core factor of 2 must be applied to dual core Processors

    Core factor of 4must be applied to single core Processors

    PLEASE NOTE: It does not matter whether hyper threading is enabled or not when licensing a POSE, you just count how many cores you have in total and multiply by the appropriate core factor.

    Confusing so far? Hopefully it will make sense as we go along!

    So if you had a one physical host with 2 physical processor, each with 2 cores, you need to firstly work out the total amount of cores you have ... in this example you would have a total of 4 cores for the host, and then multiple that by the applicable core factor to work out how many core licenses you need! So in this example as each processor is a dual core processor, we would need to use a core factor of 2. So 4 cores in total multiplied by a core factor of 2 equals a total of 8 core licenses that we would need to purchase for the host. Once we have acquired those 8 core licenses, we can actually run as many instances of SQL Server in that single POSE as we want.

    Hopefully so far so good...

    If we run instances of SQL Server in a VOSE, then the licensing rules change.

    If we are buying Standard Edition licenses, we need to licence every individual VOSE separately. So if you have 2 VOSE's running SQL Server then we need to licence each OSE separately. To work out how many Core licenses you need for each VOSE, you need to work out how many hardware threads are being made available to each VOSE. So if you have a server with 2 CPU's, each with 4 cores (8 cores in total), and each hyperthreaded (so 16 threads in total) then you might be able to allow the VOSE to use up to 16 threads. You need to purchase a Core licence for each thread made available to the VOSE. For technical reasons most organisations will limit the number of threads available to an individual OSE. If you had 6 threads available to each VOSE then each OSE would require 6 Core licenses. If hyperthreading is not enabled, then you need to count how many cores are available to the VOSE ... if it is 4 cores for example, then you would need to purchase 4 core licenses for the VOSE. It is important to note, that regardless of whether you have hyperthreading enabled or not, you must always purchase a minimum of 4 core licenses for each individual VOSE. The Core Factor Table does not apply when you are licensing individual VOSE's.

    Example 1 to clarify;

    2 VOSE's each running Standard Edition.

    I am licensing each VOSE on an individual OSE basis.

    VOSE number 1 is allocated 1 core of power (hyperthreading is not enabled)

    VOSE number 2 is allocated 6 cores of power (hyperthreading is not enabled)

    VOSE number 1 needs 4 core licenses, even though it is only using 1 core, because each VOSE must have a minimum of 4 core licenses assigned to it.

    VOSE number 2 needs 6 core licenses assigned to it

    In total we need 10 core licenses to licence our two SQL Servers.

    Keep in mind, we can run additional instances of SQL Standard inside each of those 2 VOSE's without acquiring additional SQL licenses as you are permitted to run as many instances of SQL as you like in one licenses OSE.

    Example 2:

    Same as example 1 but now with hyperthreading enabled and assuming 2 threads per core)

    2 VOSE's each running Standard Edition.

    I am licensing each VOSE on an individual OSE basis.

    VOSE number 1 is allocated 1 core of power (hyperthreading is enabled)

    VOSE number 2 is allocated 6 cores of power (hyperthreading is enabled)

    VOSE number 1 is using one core of power, but that is actually 2 threads of power. Whilst in theory that should mean 2 core licenses, we know we need a minimum of 4 core licenses for each VOSE and as such we need to purchase 4 core licenses to licence correctly this VOSE.

    VOSE number 2 is using 6 cores of power, but as hyperthreading is enabled, we actually need to licence 12 threads, each thread requires one core licence, sop we need a total of 12 core licenses for this VOSE

    A total of 16 core licenses is therefore required to licence our 2 SQL Servers

    If you are purchasing SQL Server Standard licenses, you always need to licence each OSE separately and then total up the number of licenses required for each OSE. So you need to work out how many licenses you need if you are running SQL in a POSE (using the core factor table to calculate how many licenses you need) and then add to that any licenses you need for each VOSE running SQL Server (remembering you need to work out how many licenses each individual VOSE needs and do not need to worry about the core factor table, just work out how many threads each VOSE has access to, or cores if hyper threading is not enabled, and always ensure each VOSE has a minimum of 4 core licenses, even if the VOSE is accessing less than 4 threads or less than 4 cores)

    So in your environment, you initially had 8 production SQL Server instances, each instance running in a VOSE and I will assume each VOSE can access either 4 or less threads or 4 or less cores. So each individual VOSE needs 4 core licenses ... 8 VOSE's multiplied by 4 core licenses = 32 core licenses. That would be sufficient to licence your environment based on you only using SQL Server Standard.

    Now remember you can also use Enterprise licenses to run instances of Standard if you want. With Enterprise licenses the rules are slightly different as there are two options!

    Option 1 is the same as described above, licence each individual OSE separately ... so for your environment you could purchase 32 x SQL Enterprise Core licenses ... expensive!

    Option 2 ... With SQL Server Enterprise licenses, you have another option (and 2 sub options depending on whether or not you buy Software Assurance). I will start with licenses without Software Assurance. If you licence all physical cores in the host, then you can run an unlimited number of SQL Server instances (Standard, Enterprise or a combination of the 2) in as many OSE's (POSE plus VOSE) as the number of core licenses assigned to the server. So for example, you have one host with 2 Processors, each with 10 cores. So the host has a total of 20 cores. The core factor we need to apply is 1 ... as each processor has 10 cores ...refer to the earlier core factor details ... so we need a total of 20 core licenses (20 cores x core factor of 1). Once we purchase those 20 core licenses, we can run an unlimited number of SQL Server instances in up to 20 OSE's .... i.e. 1 POSE + up to 19 VOSE's, or alternatively no POSE but up to 20 VOSE's.

    If we purchase Software Assurance (SA) with our licenses (which you will be doing when you purchase through your EA), then we can actually run an unlimited number of SQL Server instances in an unlimited number of OSE's on the licensed hosts. i.e. If you acquire 20 SQL Enterprise core licenses for our example host, and you purchase SA with those licenses, then you can run an unlimited number of SQL Server instances in the one POSE plus and unlimited number of SQL Server instances in an unlimited number of VOSE's on that same host.

    OK, so that is the rules in general that you need to be aware of ... I will now finally answer your questions directly below...

    ANSWERS TO YOUR QUESTIONS:

    "As there are active instances on all nodes we have licensed every core"

    You didn't need to do that. As described above, if you were buying SQL Standard licenses, you could have chosen to licence each VOSE separately ... and assuming each VOSE had 4 threads/cores of power or less, each VOSE would have only required 4 core licenses ... a total of 32 core licenses would have been required.

    "Now…. It appears a new application has a requirement for Enterprise Edition. The application is only ‘active’ in DC1 and will use 2 instances (of the 8), but they instances cannot be hosted on the same node under normal circumstances. It will also use the 2 associated DR instances in DC2.

    So my understanding is that in DC1, both nodes will run one active instance of SQL Enterprise, or alternatively, one node will run 2 active instances of SQL Enterprise.

    Option 1: Licence each VOSE separately ... I assume the two SQL Enterprise instances will run in two separate VOSE's. Assuming each VOSE is allocated less than 4 threads/cores of power then each VOSE requires 4 SQL Enterprise core licenses (a total of 8). As each licence has Software Assurance the VOSE's can actually move from one hoist to another whenever they like (that's another story but I wont explain that here today). Your existing Standard licenses will cover all other Standard instances you are running.

    Option 2:

    If you had to licence just one host to run both instances of Enterprise, then you would buy 20 core licenses (with SA) and those 20 core licenses would then mean you could run an unlimited number of SQL instances, both Standard and Enterprise in an unlimited number of OSE's (both POSE and VOSE) on that one host.

    If you have to licence both hosts because you are running on instance of Enterprise on each host, then you would need a total of 40 core licenses and can run an unlimited number of SQL instances across both hosts.

    A few questions:

    1. If I purchase new licenses for one entire cluster (2 nodes) in DC1 for Enterprise Edition (40 cores) and I upgrade 2 instances to be Enterprise Edition can I re-use my already purchased Standard Edition licenses elsewhere? (I assume that I can have cross edition rights from Ent to Std for the remaining 6 instances).

    As above, I would not buy the 40 core licenses... as you only need 8 in total, and yes you can continue to use your existing SQL Standard licenses for the remaining 6. In all honesty, you have acquired far more SQL Server licenses already than you needed to. Again assuming each VOSE uses less than or equal to 4 threads/cores of power, to licence all 6 instances, you only need 24 Standard core licenses, so you have almost 56 spare!

    2. Can I upgrade the 2 DR instances in DC2 (hosted 1 per node) and only use them for DR with Software Assurance from the Enterprise licenses in DC1?

    Yes, the passive instances are licensed via the Enterprise licenses you assign to the Active instances, and the passive instance can be upgraded to the same version as the active instance. If you have 2012 licenses, both instances (the active and the passive) can be 2012 ... if you have 2014 licenses, both instances can be version 2014.

    3. Is it a supported configuration to mix Standard and Enterprise edition instances on the same cluster? (I’m not saying it is a good idea, but are there any references that say it isn’t supported).

    From a licensing perspective this is fine. I unfortunately can't advise from a technical perspective.

    4. What are the pits falls from using this approach?

    From a licensing perspective there are no pitfalls. I unfortunately can't advise from a technical perspective.

    5. Would it make a difference if the licenses were SQL Server 2014 and not 2012?

    The licensing rules are slightly different for 2014 than 2012, but in relation to how many licenses you need as I have outlined above, the rules are identical for 2014 licenses as they were for 2014 licenses.

    I hope that all helped Phil. I am based in Australia, not sure where you are located, but as these things are far easier to discuss by telephone than they are by written communications, if you think I can be of any further assistance, please send me an email with a Skype or similar address and we will connect directly by voice.

    Thanks Phil