When it comes to getting the most out of our investments, it is only natural to want to maximize the value we receive. This principle applies not only to individuals but also to organizations. In the context of technology, organizations strive to purchase solutions that meet their needs efficiently. This is why capacity planning is crucial for applications that rely on SQL Server.
Hardware resources are not cheap, and it can be challenging to allocate the right budget for them. Recently, a friend of mine reached out to me with a query. He noticed that out of the 64 processors in his SQL Server machine, only 20 were being utilized according to the task manager. As someone who frequently troubleshoots SQL Server issues, I always start by gathering information about the environment. The SQL Server ERRORLOG is a valuable source of information in such cases. If you are unfamiliar with the location of the ERRORLOG, you may want to refer to my earlier blog post titled “SQL SERVER – Where is ERRORLOG? Various Ways to Find its Location.”
My friend shared the ERRORLOG with me, and I found the following message:
SQL Server detected 8 sockets with 8 cores per socket and 8 logical processors per socket, 64 total logical processors; using 20 logical processors based on SQL Server licensing.
This message explains the behavior my friend was observing, but he also wanted to find a solution. Upon further examination of the ERRORLOG, I noticed the following information at the top:
2015-05-13 11:00:54.72 Server Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) Oct 19 2012 13:38:57 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Since this was an enterprise edition of SQL Server, I expected it to utilize all the processors and fully leverage the machine’s power. To understand the licensing limitations, I consulted the licensing guide and discovered that starting from SQL Server 2012, there are two enterprise licenses available: Core Based and SERVER/CAL Based. Based on my research, the CAL based license restricts SQL Enterprise to use only 20 physical processors, or 40 logical processors if hyper-threading is enabled.
It became clear that the observed behavior was in line with the license they had purchased. As this was their most critical server, they had opted for the core-based license. They approached me with the question, “How can we change the installed SQL Server to use the Core Based license?” The answer was simple: perform an edition upgrade using new media. Here are the steps:
- Launch the setup.exe from your setup media or network location.
- Select Maintenance on the left pane of the setup dialog.
- Select Edition Upgrade on the right pane.
- After the standard pre-requisite check, you will be prompted to enter your new product key.
Upon completion of the edition upgrade, the ERRORLOG will reflect the new edition:
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) Oct 19 2012 13:38:57 Copyright (c) Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
If you are using SQL Server 2012 onwards and have a large machine, I encourage you to check your ERRORLOG to see if you are experiencing a similar issue. Alternatively, you can run the following query to retrieve the edition information:
SELECT SERVERPROPERTY ('Edition')
This issue is commonly observed during upgrades from earlier versions of SQL Server, as users may not be aware of the licensing changes. I hope this blog post has provided you with valuable insights. Feel free to leave a comment if you found this information helpful.