Microsoft SQL Server 2017 in Docker

In diesem Artikel geht es um den neuen Microsoft SQL Server 2017 Linux für Docker.

Natürlich kann man auch MS SQL 2017 direkt unter Ubuntu installieren. Microsoft stellt dafür die Pakete und Docker Images auf dem Docker HUB bereit.

Als minimale Vorraussetzung wird auf der Festplatten rund 4GB Speicherplatz und 4GB RAM benötigt. Eine laufende Docker Installation setzten wir vorraus.

In den allgemeinen Docker Image von Microsoft sind unterschiedliche SQL Editionen verein. Über einen Docker Parameter wird die jeweilige Edition gesetzt.

SQL Developer edition -> MSSQL_PID=Express
SQL Express edition -> MSSQL_PID=Developer

Mit „docker pull“ starten wir den Download von dem Microsoft SQL Server 2017 vom Docker Hub. Im Anschluss erzeugen wir mit „docker run“ eine laufende SQL Express Instanz am Netzwerkport 1433. Unsere Datenbank soll nicht im Docker Container gespeichert werden, sondern im Verzeichnis /my/data/. Das erleichter spätere Updates vom Container. Das Kennword für den Benutzer „SA“ kann natürlich individuell gestalltet werden.

sudo docker pull microsoft/mssql-server-linux
sudo docker run --name mssql1 -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=KennW@rt1' -e 'MSSQL_PID=Express' -p 1433:1433 -v /my/data:/var/opt/mssql/data -d microsoft/mssql-server-linux:2017-latest
sudo docker ps -a

Damit ist die Installation schon abgeschlossen. Jetzt können wir uns per Kommandozeile auf die Datenbank verbinden.

sudo docker exec -it mssql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'KennW@rt1'

Als Beispiel erzeugen wir die Datenbank „TestDB“ mit der Tabelle „Inventory“ und zwei Datensätzen. Per SQL Kommando kann man auch das Kennwort von Benutzer „SA“ ändern.

CREATE DATABASE TestDB
GO
USE TestDB
CREATE TABLE Inventory(ID INT, Name NVARCHAR(50), Quantity INT)
GO
INSERT INTO Inventory VALUES (1, 'banana', 25);
INSERT INTO Inventory VALUES (2, 'orange', 14);
SELECT * FROM Inventory WHERE quantity > 15;
GO
ALTER LOGIN SA WITH PASSWORD='Neues!Kennwort'
GO
QUIT

Microsoft stellt das SQL Server Management Studio Version 17 für Windows als grafisches Tool bereit. Die IDE ist sehr Umfangreich und setzt viele Resourcen vorraus.

Eine alternative IDE stellt HeidiSQL dar.

USB Festplatte in Standby versetzen

Aufgabe ist es die Lebenszeit einer externen Festplatte zu verlängern, indem wir Sie nach einiger Zeit runter fahren.

Dazu brauchen wir das HDParm Tool, mit dem wir die Werte in der Festplatte setzen können. Ist HDParm noch installiert, so machen wir jetzt.

sudo apt install hdparm

Jetzt können wir die Festplatte sofort in Standby setzt.

sudo hdparm -y /dev/sda

Soll die Festplatte automatisch nach 50 Sekunden runter fahren, können wir den Parameterwert -S 10 setzen (10 * 5 Sekunden = 50 Sekunden). Möglich Werte sind von 1 bis 240. Die Einstellung sind nicht statisch und müssen nach einem Neustart wieder gesetzt werden.

sudo hdparm -S 10 /dev/sda

Wir können den Status der Festplatte prüfen.

sudo hdparm -C /dev/sda

Mit einer UDev-Regel können wir die Werte für die USB Festplatte nach dem Anstecken automatisch setzen.

sudo vim /etc/udev/rules.d/50-hdparm.rules

ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 127 -S 120 /dev/%k"

Der Parameter -B 127 aktiviert das Energiemanagement der Festplatte. Der Parameter -S setzt den Timeout-Wert von 10 Minuten (120*5 Sekunden).

Die UDev-Regeln müssen neu geladen werden.

sudo udevadm control --reload-rules
sudo udevadm trigger