Enterprise vs EnterpriseCore Edition for SQL Server on Linux production Workloads

  • Thread starter Thread starter amvin87
  • Start date Start date
A

amvin87

Recently, in one of the meetings with our CSS team (support) we realized that our customers might not be selecting the right Enterprise edition for their SQL Servers deployed on Linux. To learn more about different SQL Server editions please refer: Editions and supported features of SQL Server 2022 - SQL Server | Microsoft Learn.



Thus, through this blog we would like to provide guidance on how you can identify and update the SQL Server to use the right Enterprise edition which should show up in the error log as : "Enterprise Edition: Core-based Licensing (64-bit)" and not "Enterprise Edition (64-bit)" which is only needed in case you need to follow historical licensing agreements that limits to a maximum 20 cores per SQL Server instance.



For New SQL Server installations:


After, the SQL Server setup, when you run the SQL Server configuration using the mssql-conf tool as shown below:

sudo /opt/mssql/bin/mssql-conf setup

You are presented with the following editions, please note that option 9 (Standard (Billed through Azure)) and option 10 (Enterprise Core (billed through Azure)) are only available for SQL Server 2022 versions.





1) Evaluation (free, no production use rights, 180-day limit)
2) Developer (free, no production use rights)
3) Express (free)
4) Web (PAID)
5) Standard (PAID)
6) Enterprise (PAID) - CPU core utilization restricted to 20 physical/40 hyperthreaded
7) Enterprise Core (PAID) - CPU core utilization up to Operating System Maximum
8)​
I bought a license through a retail sales channel and have a product key to enter.
9) Standard (Billed through Azure) - Use pay-as-you-go billing through Azure.
10) Enterprise Core (Billed through Azure) - Use pay-as-you-go billing through Azure.


When you intend to run the Enterprise edition assuming you have the required agreements in place, you should normally choose to run the “Enterprise Core” that is option 7 in the above list, unless you have a specific reason to use the legacy license which is “Enterprise” i.e option 6 in the above list, this option is mostly needed to follow historical agreements and is limited to 20 cores per SQL Server instance and not available for new agreements anymore.



Change edition for existing SQL Server instances.


To identify, if you have the correct Enterprise edition selected for the SQL Server on Linux installed, you can review the errorlog and if you see the version listed as “Enterprise Edition (64-bit)” then you are using the legacy Enterprise (PAID) edition that is limited to 20 cores.



To update this license, to use the Enterprise Core license you can run the command as shown below, please note this procedure REQURIES SQL SERVER TO BE STOPPED AND STARTED, so please do this during a scheduled maintenance window only.



Note: It is important that you use the ACCEPT_EULA clause otherwise SQL Server service will not start after the edition change. Also, please answer the Software Assurance question based on your scenario, if you have it covered then say yes, else please select no.

[amvin@ mylinux ~]$ sudo cat /var/opt/mssql/log/errorlog | grep Enterprise
Enterprise Edition (64-bit) on Linux (Red Hat Enterprise Linux 8.8 (Ootpa)) <X64>

[amvin@ mylinux ~]$ sudo systemctl stop mssql-server

[amvin@mylinux ~]$ sudo ACCEPT_EULA='Y' /opt/mssql/bin/mssql-conf set-edition
Choose an edition of SQL Server:
1) Evaluation (free, no production use rights, 180-day limit)
2) Developer (free, no production use rights)
3) Express (free)
4) Web (PAID)
5) Standard (PAID)
6) Enterprise (PAID) - CPU core utilization restricted to 20 physical/40 hyperthreaded
7) Enterprise Core (PAID) - CPU core utilization up to Operating System Maximum
I bought a license through a retail sales channel and have a product key to enter.
9) Standard (Billed through Azure) - Use pay-as-you-go billing through Azure.
10) Enterprise Core (Billed through Azure) - Use pay-as-you-go billing through Azure.
Details about editions can be found at

SQL Server 2019 | Microsoft



Use of PAID editions of this software requires separate licensing through a

Microsoft Volume Licensing program.

By choosing a PAID edition, you are verifying that you have the appropriate

number of licenses in place to install and run this software.

By choosing an edition billed Pay-As-You-Go through Azure, you are verifying

that the server and SQL Server will be connected to Azure by installing the

management agent and Azure extension for SQL Server.



Enter your edition(1-10): 7

Is the product selected covered by Software Assurance? [Yes/No]:Yes



Configuring SQL Server...



ForceFlush is enabled for this instance.

ForceFlush feature is enabled for log durability.

Please run 'sudo systemctl start mssql-server' to start SQL Server.

[amvin@ mylinux ~]$ sudo systemctl start mssql-server

[amvin@ mylinux ~]$ sudo cat /var/opt/mssql/log/errorlog | grep Enterprise

Enterprise Edition: Core-based Licensing (64-bit) on Linux (Red Hat Enterprise Linux 8.8 (Ootpa)) <X64>

As you can see after the change the errorlog shows the SQL Server licensing changed from “Enterprise Edition (64-bit)” to “Enterprise Edition: Core-based Licensing (64-bit)” which is the correct licensing to use.







For SQL Server containers


When deploying SQL Server container instances, please set the MSSQL_PID environment to EnterpriseCore as shown below. You can verify the edition by looking at the errorlog.

amvin@mylinux:~$ docker run --name sql22 -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=LS1setup!' -e 'MSSQL_PID=EnterpriseCore' -p 1436:1433 -d mcr.microsoft.com/mssql/server:latest

amvin@mylinux:~$ sudo docker logs sql22 | grep Enterprise
2023-09-28 14:12:10.60 Server The licensing PID was successfully processed. The new edition is [Enterprise Edition: Core-based Licensing].





Changing the edition for SQL Server containers deployed:


For the SQL Server containers that are already deployed, you can check the existing Enterprise edition in SQL Server errorlogs with a query as shown below and If you see the licensing as Enterprise Edition, then please stop and remove the container, ensure the container is using persistent volumes (to avoid data loss), and then redeploy the container using the MSSQL_PID environment variable set to Enterprisecore as shown below. Once the container is deployed, you can verify that the edition is changed using the same command:

amvin@ mylinux:~$ sudo docker logs sql22 | grep Enterprise
2023-09-28 14:24:14.07 Server The licensing PID was successfully processed. The new edition is [Enterprise Edition].

amvin@ mylinux:~$ sudo docker rm -f sql22

amvin@ mylinux:~$ sudo docker run --name sql22 -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=LS1setup!' -e 'MSSQL_PID=EnterpriseCore' -p 1436:1433 -d mcr.microsoft.com/mssql/server:latest

amvin@mylinux:~$ sudo docker logs sql22 | grep Enterprise
2023-09-28 15:09:36.99 Server The licensing PID was successfully processed. The new edition is [Enterprise Edition: Core-based Licensing].

Hope this helps!!

Continue reading...
 
Back
Top