Managing SQL Server licensing is a task most DBAs confront with resignation. Whether we’ve been managing a group of SQL Servers for a long time, or are looking at them for the first time, knowing which versions and editions are installed on which servers, allows us to understand what licenses are in use. This knowledge will be even more important when the inevitable happens: the dreaded license audit!
Preparing for a licensing audit
A licensing audit is usually combined with an “Enterprise Agreement”, a sort of blanket contract that outlines which Microsoft products are licensed and at what level, for an entire company. The annual audit is also known as a “True Up” and is the moment when some rather large sums of money can be needed to fill in the license gaps that have accumulated over the previous 12 months. In most cases when I have been involved in such an audit, an external company has scanned the network to identify what servers are installed. It is quite common for such a scan to uncover servers that were previously unknown to you or your colleagues. This can be particularly worrying if they are only found during the audit itself!
A much better approach to a licensing audit is simply to be prepared. It is a very sensible investment of your time to assess your estate and prepare in advance the information you know will be requested. Much of this is provided in the new Estate page in SQL Monitor, called SQL Server Licensing. I’ll review this properly later in the article, but it includes details of the servers running SQL Server, the SQL Server versions and editions installed, specifications and configuration of the servers, details of processor cores, participation in Availability Groups, and so on.
Using all this information, you can take appropriate action, before the audit. This need not always mean buying more licenses. If you can identify servers that are eligible for decommissioning or can be consolidated or stepped down from Enterprise Editions to Standard Edition, you have some potentially high valued savings to be made!
SQL Server licensing overview
To recognize the implications, let us first understand how the licensing model of SQL Server works. SQL Server is offered in a handful of different “editions”. These editions provide different feature availability at different price points, allowing companies to decide which features they require and which they can go without, according to budget constraints. There are, at the time of writing, four editions of SQL Server to choose from. I’m not including Web and Compact editions as they are specialized editions, not designed for general purpose use:
- Enterprise Edition
- Standard Edition
- Express Edition
- Developer Edition
Enterprise Edition is the “full fat” edition of SQL Server. All features and functionality are available, all the time. There are no internal limits in the product feature set. This is aimed at large scale databases, which require high performance and high availability.
Standard Edition is the next step down from Enterprise Edition. This edition has an identical programming surface but lacks certain high-performance improvements in the query processing engine. This edition also introduces hardware limitations (CPU Cores and RAM usage limits). Equally, more advanced features for High Availability and enterprise level Business Intelligence are disabled. These are all in line with the advertised use case of Standard Edition and usually do not pose too many problems for the more price sensitive customers.
Express Edition is the “smallest” edition of SQL Server that can be used in a production capacity. This edition is free of charge, but has extreme limitations imposed upon it. A single database may only grow to a maximum of 10GB in size and just over 1GB of RAM may be used. This edition is still usable, even for production workloads, if those workloads fit within the narrow limitations.
Developer Edition is, as the name suggests, a developer focused edition of SQL Server. This edition may not be used for production workloads and is purely available to run development. This edition is also free of charge and can be downloaded directly from Microsoft’s website. From a feature availability standpoint, this edition is identical to Enterprise Edition. This means, all the features and functionalities can be tested in a development environment without incurring the costs of Enterprise Edition.
The licensing costs of these editions is based upon the number of CPU cores being used. Full details on licensing depends heavily on many different factors and is difficult to define for all cases (virtualization being one factor that makes this even more complex). The list price for SQL Server 2019 Enterprise Edition is $7,128 per CPU core, sold in packs of two. This means that if you have a server with 16 cores you will need 8 packs of core licenses at a price of $114,048.
SQL Monitor shines light on your licensing
Without a monitoring tool, you’d need to a tool like the Microsoft Assessment and Planning (MAP) Toolkit to get an inventory of your servers, and probably some scripting to collect and collate all the server, instance and licensing information you need.
Fortunately, SQL Monitor collects all the information you need in one place, for all the SQL Servers installed in our environment. The Installed Versions section of the Estate page in SQL Monitor has, for some time, let us see the versions and editions installed, pinpointing if servers were patched or if they were outside of mainstream support.
In version 10 of SQL Monitor we also have a new overview of SQL Server licensing, allowing full insight into how many physical and virtual CPU cores are consuming which versions and editions of SQL Server.
The top portion of this screen gives a clear overview of the number of servers running and their editions. In the bottom half of the screen is a more detailed view of single servers/instances with information about the cores assigned to a particular server and additional information about each instance, including if the servers are replicas in an availability group, which can affect licensing requirements depending on how they are setup. Microsoft provides a 42-page licensing guide including explanations of licensing scenarios for HA/DR environments (page 27).
At the top of the page is a set of filtering functions, using information pulled from the SQL Monitor database. These allow for quick filtering of larger server lists, for example via groupings defined in SQL Monitor, meaning we can focus on certain subsets of servers during a pre-audit licensing investigation.
How can this help you?
Just as one illustrative example, I have used this overview recently to identify a set of development servers in a client environment that had been installed using Enterprise Edition. This would have caused my client a license bill north of $100,000, for servers that were being used solely for development purposes. As this is a large environment, this misconfiguration could have easily been missed and rolled into the annual True Up invoice. Because SQL Monitor was in place, the servers were easily identified and reinstalled with Developer Edition before the True Up audit was executed and my client saved themselves a nice chunk of money!
Was this article helpful?