Von Sebastian Herd auf Donnerstag, 20. August 2020
Kategorie: Data Management

SQL Server - Linux on Docker

In diesem Blog-Artikel wird eine kurze Anleitung aufgezeigt, wie Sie den Microsoft SQL Server in der Linux-Variante unter Docker mit wenigen PowerShell-Befehlen zum Laufen bekommen. Zusätzlich wird das Einrichten eines Docker-Volumes aufgezeigt, um Daten vom Host in den Docker-Container zu kopieren.

Voraussetzungen:

Bevor die Installation von Docker auf Windows gestartet werden kann, muss das Hyper-V-Feature aktiviert werden. Eine Anleitung dafür ist über folgenden Link erreichbar: https://docs.microsoft.com/de-de/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

Nachdem die Installation von Docker erfolgreich durchgelaufen ist, muss der Arbeitsspeicher auf min. 3.250 MB angepasst werden. Standardmäßig steht der Wert auf 2.048 MB. Im folgenden Beispiel sind 15,75 GB an Arbeitsspeicher zugeordnet. 

Jetzt sind wir in der Lage, den SQL Server mittels PowerShell in einem Docker-Container aufzusetzen. In diesem Beispiel erstellen wir zunächst ein einfaches Volume, welches wir später dem Docker-Container zuweisen werden, um Daten vom Host in den Docker-Container zu kopieren. Zusätzlich dient das Volume der persistenten Datenhaltung.

Im nächsten Schritt erstellen wir den SQL Server Docker Container mit dem Namen sbh_sql und weisen das zuvor erstellte Volume (sqlserverdata_volume) dem Container mit dem Parameter -v sqlserverdata_volume:/sqlserver/data zu.

Jetzt kann überprüft werden, ob der Container läuft.

Im Folgenden wird die Backup-Datei auf das Volume im Docker-Container kopiert.

Im letzten Schritt wollen wir jetzt die Datenbank aus der Backup-Datei in der SQL-Server-Instanz wiederherstellen. Dies kann mit dem SQL Server Management Studio (SSMS) oder Azure Data Studio erfolgen. Als Möglichkeit bieten sich die dbatools an.

Zunächst wollen wir uns die Verbindung und das Einspielen des Backups mittels SQL Server Management Studio anschauen. Eine einfache Verbindung auf den erstellten Container mittels localhost als Servername reicht aus. Wenn bei der Container-Erstellung ein anderer Port als 1433 angegeben wurde, so muss dieser natürlich entsprechend mit angegeben werden.

Nachdem wir erfolgreich eine Verbindung auf den SQL Server Container hergestellt haben, wird abschließend die Backup-Datei aus dem angehängten Volume wiederhergestellt. Hierzu wird die bekannte GUI zum Wiederherstellen einer Datenbank des SSMS geöffnet und entsprechend zur Backup-Datei unter /sqlserver/data navigiert.

Abschließend ist jetzt das Beispiel mittels PowerShell und dbatools an der Reihe. Voraussetzung für dieses Vorgehen ist natürlich, dass die dbatools installiert sind. Eine Anleitung ist hier zu finden: https://dbatools.io/download/

Wenn die dbatools auf Ihrem System installiert sind, kann mit dem Befehl Restore-DbaDatabase der Restore auf dem SQL Server Container durchgeführt werden. Durch den Parameter -SqlCredential wird das Passwort für das sa-Login abgefragt und für den Restore-Prozess anschließend verwendet. Dies ist notwendig, da wir auf dem Linux System nicht mit Windows-Logins arbeiten können.

Nach der Ausführung wird folgender Output geliefert:

Zusammenfassung

Mit nur wenigen PowerShell-Befehlen kann ein SQL Server in einem Docker-Container inkl. eines Volumes erstellt werden. Gerade für schnelle Testszenarien ist dies eine schöne aber vor allem schnelle Alternative, um ein Test-System in kurzer Zeit aufzusetzen. Auf die erstellte SQL-Server-Instanz und die enthaltenen Datenbanken kann jetzt mit jedem gewünschten Tool (z.B. SSMS, PowerShell oder Power BI) mit gewohnten Verbindungseigenschaften zugegriffen werden.

Kommentare hinterlassen