If you run the following check on your schedulers:
select * from sys.dm_os_schedulers
You should see them all Online, either Visible for user processes or hidden online for internal database engine processes. Unless you are using Affinity mask you should not see any as offline if you are using Enterprise Edition – right?
With SQL 2012 the licensing changes from a processor to a core model. This led to a need for two editions of Enterprise edition – one for people with Enterprise agreements to transition their servers, and one for new core based installations.
This led to some confusion as the Enterprise Edition designed for upgrading your current Server+CAL licensing from 2008 R2 to 2012 has a 20 core limit(or 40 with hyperthreading). If you are running the Enterprise Edition of 2012 and if you have more than 20 cores, we recommend you take a peak at sys.dm_os_schedulers to make sure you are getting all of what you are paying for.
So – how to fix it? The process to upgrade from Enterprise(Core Limited) to Enterprise(Core unlimited) is the same as any other Edition upgrade. You need a copy of the correct install media and run setup.exe. Then just choose Edition Upgrade from the Maintenance screen:
When you get to the license screen you want to see this:
Be warned you will get an error that tells you this upgrade will break Always On Availability Groups if you are using this feature:
Do not disable your availability groups. You don’t need to. Mutter a curse about Microsoft not fixing known bugs, click okay and then forget about it. Your Availability Groups will continue to function perfectly fine.
For those wondering about the AOAG error and why it can just be dismissed – we raised a premier support case around this the first time it was encountered and received the following feedback:
Cause
This is a Bug (1048600: Engine Extension edition upgrade rule for Eval to Enterprise Core gives an invalid warning for AlwaysOn support).
Resolution
You may ignore the warning (as it a Bug) and proceed with “Edition Upgrade” to install Core Based License (don’t worry AlwaysOn will work as expected). After the upgrade, verify Errorlog, it should now show SQL version as “Enterprise Edition: Core-based Licensing (64-bit)” and now SQL should use correct number of cores as per customer’s license.