In this post we will discuss existing Microsoft SQL Server licensing schemes and learn how to license SQL Server in a virtualization and container environment (the post is relevant for the latest versions of MS SQL Server 2016, 2017 and 2019).
MS SQL Server Editions & Licensing Models
Microsoft SQL Server is available in six editions:
- Express Edition is a free edition for small installations, with the maximum database size up to 10 GB, RAM usage – up to 1 GB, 1 physical socket, or 4 cores;
- Developer Edition is a free fully functioning edition for developers. It includes the entire stack of SQL Server technologies. You can install and use it only for development, testing, or demonstrating in a non-production environment;
- Web Edition is a special edition for web hosting providers distributed under the Microsoft Services Provider License Agreement (SPLA) only;
- Standard Edition offers basic database management, reporting, and analytic features. The maximum RAM usage is up to 128 GB, the host may have 4 sockets or 24 cores (you can configure replication between multiple SQL Server instances);
- Enterprise Edition is the full database management system edition. It includes Standard Edition features and offers extra analysis, fault tolerance, and data processing features;
- Evaluation Edition – evaluation version of SQL Server version with a fully functional (expires after 180 days).
Developer and Express Editions are free, Standard and Enterprise Edition require licensing.
There are two SQL Server Licensing models:
- Per Core
SQL Server Standard may be licensed using either of the models (Server+CAL or Per Core).
SQL Server Enterprise is licensed using Per Core model only.
SQL Server Per Core Licensing
This licensing model is used for servers with a lot of clients or in cases when the number of clients is unknown. The licensing model allows an unlimited number of users or devices to connect to the SQL Server both inside or outside your organization.
You don’t need to purchase additional client licenses (CALs).
Per Core model assumes that you buy licenses to cover all cores of your host running SQL Server. Here are the main requirements and restrictions:
- One license per two cores (2Lic Core);
- To license a server, you must buy at least two 2-core licenses;
- When running on a physical server (physical operating system environment — POSE), all server cores must be licensed.
MS SQL Server CAL + Server Licensing
According to this licensing model, one server license is purchased for each SQL Server instance. The license is tied to a physical (virtual) server (the number of sockets and cores on the host doesn’t matter). Then you will have to buy client licenses (CAL) for each device or user connecting to your SQL Server.
SQL Server CALs (like RDS CALs) are of two types::
- User CAL is purchased for user accounts that connect to SQL Server with a server license;
- Device CAL – is purchased for all devices used to connect to SQL Server with a server license.
Each SQL Server CAL allows to connect to any number of SQL Server databases and instances.
Since User CAL and Device CAL have the same price, it is recommended that you evaluate the cost-effectiveness of purchasing user or device licenses type in advance.
SQL Server licensing examples:
- 20 users use SQL Server from 20 known devices. In this case, it doesn’t matter what type of SQL CAL to buy.
- 20 users use SQL Server from 50 devices. In this case, it is better to purchase ‘per user’ CALs.
- 50 users use SQL Server from 20 devices. In this case, it will be efficient to buy ‘per device’ CALs.
The following does not matter when estimating the number of SQL Server CALs:
- The number of hosts running SQL Server in your company;
- The number of user accounts on servers;
- The number of concurrent connections to servers;
- The number of business applications between your SQL Server and clients;
- The number of RDS (terminal) servers between SQL Server and clients;
- Users in the staff of any companies;
- Device ownership by people or companies.
Please note that CALs can be reassigned to another user or device only once in 90 days. CALs allow to use previous versions of SQL Server (downgrade rights).
For correct licensing, use SQL Server CALs of the same or newer version as your SQL Server. For example, to access SQL Server 2017 Standard Edition, you need SQL CAL 2019 or SQL CAL 2017.
SQL Server 2019 Pricing
- SQL Server Enterprise Edition (2 core pack)-
- SQL Server Standard Edition (2 core pack) —
- SQL Server Standard Edition —
$899+ the number of CALs you need
- SQL Server Device/User CAL —
For example, to license a SQL Standard 8-core server with 50 users, you can:
- Buy per core licenses (SQLSvrStdCore 2019 SNGL MVL 2Lic CoreLic):
3586*4 = $14344
- Buy a server license (SQLSvrStd 2019 SNGL MVL) and the number of CALs you need (SQLCAL 2019 SNGL MVL UsrCAL):
899 + 50*209 = $11349
As you can see, if you have a lot of users, it is beneficial to license your SQL Server based on the number of cores. However, if you use multiple SQL Server instances in your production environment and the number of users is the same, it is better to use Server + CAL licenses.
Licensing of SQL Server Components
SQL Server includes some licensed server components:
- SQL Server Database Engine (DB)
- SQL Server Machine Learning Services
- Machine Learning Server Standalone
- Master Data Services (MDS)
- Analysis Services (AS)
- Integration Services (IS)
- Reporting Services (RS)
- Data Quality Services (DQS)
Software components of the same SQL Server license cannot be separated. Any operating environment, in which licensed SQL Server components are running, requires a license. For example, if an SQL Server database is deployed in one Windows node, and SQL Server Reporting Service is deployed in another one, both of them must be fully licensed.
If you use your SQL server in High Availability mode, you don’t need to license a passive copy of SQL Server on another host (if it is used for failover only).
SQL Server Licensing on Virtual Machines and Containers
Like Windows Server licensing, SQL Server licensing in a virtualization environment has some specific aspects.
Per Core Licensing Model
Like in per core licensing on a physical server, you must license all virtual cores (vCPUs) of a virtual machine an SQL Server instance is running on. You can license only VM virtual cores or all physical cores of your physical host (it makes sense if you run only the VM with SQL Server on the host).
Buy at least 2 licenses (2 cores each) for every VM. In the example below, all cores are counted, and then the number of cores is divided by 2 (14 cores to be licensed are divided by 2 — so you will have to buy 7 SQL Server licenses). The first virtual machine has only 2 cores, but the license is purchases for 4 cores, which is a minimum requirement.
When using SQL Server Enterprise Edition, you can license all physical cores of your server and run an unlimited number of SQL instances in the number of operating environments (physical and/or virtual) equal to the number of licenses per core.
For example, a dual-socket server (2 CPUs) with 4 cores each fully licensed with 4 SQL licenses (2 licenses per socket) can run SQL Server on eight virtual machines independently of the number of virtual cores allocated for each virtual machine.
Customers, who have licensed all physical cores on a server and want to run SQL Server on more virtual machines than it is allowed to, can assign additional per core licenses to the server.
Each additional per core license allows to deploy SQL Server on extra virtual machine. So in the previous example, a customer, who wants to run SQL Server Enterprise Edition on twelve virtual machines, can buy and assign twelve licenses to this server (6x 2Lic packs).
When using Software Assurance (SA) with Enterprise Edition licenses, you can deploy an unlimited number of virtual machines to process dynamic workloads and to fully use hardware computing capabilities. You can do it only if your SA subscription is active.
Server + CAL Licensing Model
This virtual machine licensing model is the same as the physical server licensing scheme. A server license is purchased for each virtual machine running SQL Server Standard. An SQL client access license (CAL) is purchased for every user or device.
Container licensing is similar to virtual machine licensing: you must license all cores used in an SQL Server container. Or you may also use CAL licensing model.