You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: adoc/SLES-SQL-server-linux.adoc
+83-28Lines changed: 83 additions & 28 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,8 +15,6 @@
15
15
:sles: SUSE Linux Enterprise Server
16
16
:sqls: SQL Server
17
17
18
-
image:sqlserver.svg[SQL Server,400,400]
19
-
20
18
== Motivation
21
19
22
20
=== Background
@@ -51,10 +49,15 @@ Another reason may be lower negotiated pricing for Linux subscriptions to replac
51
49
The guide covers a basic installation of {sqls} on {sles} including the OS tuning specific for {sqls}.
52
50
It is meant to be agnostic of underlying infrastructure excepting the nuance of registering your server discussed in <<server_registration>> <<Server registration>>.
More information about registering can be found in the https://documentation.suse.com/sles/15-SP6/single-html/SLES-deployment/#sec-yast-install-scc-registration[{sles} 15 SP6 Deployment Guide].
105
114
106
115
@@ -147,10 +156,10 @@ To install the {sqls} package non-interactively, and the add-ons, run the follow
@@ -161,12 +170,10 @@ This section is covering the OS modification, the NIC configuration, the recomme
161
170
==== OS configuration (CPU, Kernel, Memory)
162
171
163
172
[discrete]
164
-
==== CPU/sysctl/disk/memory setting
165
-
{sles} contains a `TuneD` profile for mssql (within the `tuned` package), but it does not align with the {sqls} best practices guide. The next steps outline and describe the changes recommended for {sqls}.
166
-
Using TuneD it automatically configures CPU frequency governor, ENERGY_PERF_BIAS, and min_perf_pct settings appropriately because of the `throughput-performance` profile being used as base for the `mssql profile`.
167
-
C-States parameter must be configured manually. The disk readahead section is also covered by including the file `throughput-performance`, check the settings if they are equal and skip them if not needed.
168
-
169
-
Create an mssql profile:
173
+
==== CPU | sysctl | disk | memory setting
174
+
{sles} contains a `TuneD` profile for mssql (within the `tuned` package), but it's not according to the {sqls} best practices guide. The next steps describe and line out the changes recommended for {sqls}.
175
+
Using TuneD it automatically configures CPU frequency governor, ENERGY_PERF_BIAS, and min_perf_pct settings appropriately due to the `throughput-performance` profile being used as base for the `mssql profile`.
176
+
C-States parameter must be configured manually. The disk readahead section is also covered by including the file `throughput-performance`, please check the settings if they are equal and skip them if not needed.
Depending on the infrastructure it might be necessary that the CPU setting is disabled (for example log message: `cpu0: 'energy_perf_bias' = 'None', expected 'performance'`).
217
-
This can be achieved by copying the source file `throughput-performance` and modifying it. Comment the line `energy_perf_bias=performance`. This will avoid error messages (like mentioned before) if `TuneD` is started and cannot set this parameter.
223
+
Depending on the infrastructure it might be necessary that the CPU setting must be disabled (e.g. log message: `cpu0: 'energy_perf_bias' = 'None', expected 'performance'`).
224
+
225
+
This can be achieved by copying the source file `throughput-performance` and modifying it.
218
226
227
+
Comment the line `energy_perf_bias=performance`, this will avoid error messages (like mentioned before) if `TuneD` is started and can't set this parameter.
@@ -572,9 +580,38 @@ Use storage subsystem with appropriate IOPS, throughput, and redundancy. Based o
572
580
* transaction log (mount point /log)
573
581
* tempdb (mount point /tempdb)
574
582
575
-
The default file system for the OS is Btrfs, all others use XFS. Based on the database sizing the required disk must be provided. The example will decribe a Linux Software RAID based setup.
576
-
The disks `sdb - sdh` are the partitions from the NVME storage underneath. The command `lsblk` helps to find the right partition name to build a reasonable RAID setup later and avoid having all partitions
577
-
from one NVME only in the same RAID configuration.
583
+
The default filesystem for OS will be btrfs all others will have xfs. Based on the database sizing the required disk must be provided. The example will decribe a Linux Software RAID based setup.
584
+
The disk `sdb - sdi` are the partitions from the NVME storage underneath. The command `lsblk` helps to find the right partition name to build a reasonable RAID setup later and avoid having all partitions
585
+
from only one NVME in the same RAID configuration.
586
+
587
+
.Example for `lsblk`
588
+
[source,shell]
589
+
----
590
+
# lsblk
591
+
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
592
+
sda 8:0 0 50G 0 disk
593
+
├─sda1 8:1 0 8M 0 part
594
+
├─sda2 8:2 0 48G 0 part /var
595
+
│ /opt
596
+
│ /home
597
+
│ /srv
598
+
│ /root
599
+
│ /usr/local
600
+
│ /tmp
601
+
│ /boot/grub2/x86_64-efi
602
+
│ /boot/grub2/i386-pc
603
+
│ /.snapshots
604
+
│ /
605
+
└─sda3 8:3 0 2G 0 part [SWAP]
606
+
sdb 8:16 0 10G 0 disk
607
+
sdc 8:32 0 10G 0 disk
608
+
sdd 8:48 0 10G 0 disk
609
+
sde 8:64 0 10G 0 disk
610
+
sdf 8:80 0 11G 0 disk
611
+
sdg 8:96 0 11G 0 disk
612
+
sdh 8:112 0 12G 0 disk
613
+
sdi 8:128 0 12G 0 disk
614
+
----
578
615
579
616
INFO: The following chapter is done as `root` user, if this is not possible the `sudo` must be put in front of each command.
580
617
@@ -734,7 +771,10 @@ MSSQL_MEMORY_LIMIT_MB='<some value here>' ACCEPT_EULA='Y' MSSQL_PID='Developer'
734
771
WARNING: It is recommended to change the SA password later with `mssql-conf set-sa-password`
735
772
or disable the history prior to configuring SQL Server with `set +o history`, and re-enabling it afterward with `set -o history` (Bash).
736
773
737
-
If specifying a *product key*, it must be in the form of #####-#####-#####-#####-#####, where '#' is a number or a letter.
774
+
:hash: #
775
+
:hash5: #####
776
+
777
+
If specifying a `product key`, it must be in the form of `{hash5}`-`{hash5}`-`{hash5}`-`{hash5}`-`{hash5}`, where `{hash}` is a number or a letter in summary 25.
738
778
739
779
- {sqls} should be started at this point. You can verify this with `systemctl status mssql-server.service`.
740
780
- {sqls} listens for connections on port `1433` by default, that is a second option to verify the {sqls} is up and running.
Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64)
785
825
Sep 25 2024 17:34:41
786
826
Copyright (C) 2022 Microsoft Corporation
@@ -798,8 +838,9 @@ The following example moves `tempdb` from its current default location on the di
798
838
MSSQLSERVER service is started, you do not need to physically move the data and log files. The files are created when the service is restarted.
799
839
Until the service is restarted, tempdb continues to function in its existing location. Determine the logical file names of the tempdb database and their current location on disk.
800
840
801
-
Check the current location and decided if a move is required or not with `sqlcmd -S <hostname> -U SA -P <password>`:
841
+
.Check the current location with `sqlcmd -S <hostname> -U SA -P <password>`
802
842
843
+
(decide if a move is required or not)
803
844
[source,sql]
804
845
----
805
846
sqlcmd -S mssql -U SA -P Strong\!Passw0rd
@@ -993,7 +1034,7 @@ To start Azure Data Studio run the command on your shell:
993
1034
azuredatastudio
994
1035
----
995
1036
996
-
image:azure-data-studio.png[Azure Data Studio,480,360,scaledwidth=90%]
1037
+
image:azure-data-studio.png[Azure Data Studio,480,360,float="right",align="center"]
997
1038
998
1039
With `Create a connection` the {sqls} can be added. A pop-up window is asking for the required parameter. The connection can be established to a single node or the virtual IP of a cluster setup.
999
1040
@@ -1202,8 +1243,15 @@ To stay up to date on the latest SQL Server on Linux features, bookmark https://
1202
1243
[id="password_requirements"]
1203
1244
=== SQL Server password requirements
1204
1245
1246
+
<<<<<<< HEAD
1247
+
Password complexity policies are designed to deter brute force attacks by increasing the number of possible passwords.
1248
+
When password complexity policy is enforced, new passwords must meet the following guidelines:
1249
+
1250
+
* The password doesn't contain the account name of the user.
1251
+
=======
1205
1252
Password complexity policies are designed to deter brute force attacks by increasing the number of possible passwords. When password complexity policy is enforced, new passwords must meet the following guidelines:
1206
1253
* The password does not contain the account name of the user.
1254
+
>>>>>>> main
1207
1255
* The password is at least eight characters long.
1208
1256
* The password contains characters from three of the following four categories:
1209
1257
** Latin uppercase letters (A through Z)
@@ -1216,9 +1264,16 @@ Passwords can be up to 128 characters long. Use passwords that are as long and c
1216
1264
=== Security limitations of SQL Server on Linux
1217
1265
1218
1266
SQL Server on Linux currently has the following limitations:
1267
+
<<<<<<< HEAD
1268
+
1269
+
* A standard password policy is provided. `MUST_CHANGE` is the only option you might configure. The `CHECK_POLICY` option isn't supported.
1270
+
* Extensible Key Management isn't supported.
1271
+
* SQL Server authentication mode can't be disabled.
1272
+
=======
1219
1273
* A standard password policy is provided. `MUST_CHANGE` is the only option you might configure. The `CHECK_POLICY` option is not supported.
1220
1274
* Extensible Key Management is not supported.
1221
1275
* SQL Server authentication mode cannot be disabled.
1276
+
>>>>>>> main
1222
1277
* Password expiration is hard-coded to 90 days if you use SQL Server authentication.
1223
1278
* Using keys stored in the Azure Key Vault is not supported.
1224
1279
* SQL Server generates its own self-signed certificate for encrypting connections. SQL Server can be configured to use a user provided certificate for TLS.
@@ -1266,7 +1321,7 @@ lspci |grep balloon
1266
1321
=== References
1267
1322
1268
1323
* https://documentation.suse.com/sles/15-SP6/[SUSE Linux Enterprise Server 15 SP6]
* https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup?view=sql-server-ver16[Installation guidance for SQL Server on Linux]
1272
1327
* https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-suse?view=sql-server-ver16[Quickstart: Install SQL Server and create a database on SUSE Linux Enterprise Server]
This section will provided some advise how to handle business critical solutions where multiple vendors are involved.
8
+
9
+
# end::mvs-general[]
10
+
11
+
# tag::mvs-sql[]
12
+
13
+
==== SUSE and Microsoft SQL Server
14
+
15
+
The solution in this guide requires a support contract for both products. With SUSE (valid and active subscription) for the operating system and with Microsoft a license for MS SQL Server.
16
+
17
+
Details about the SUSE subscriptions can be found here:
18
+
19
+
* https://www.suse.com/support/
20
+
21
+
Details about the SQL Server licensing can be found here:
0 commit comments