MSSQL Server 2019 mit persistentem Datenspeicher

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Georg P.

Benutzer
Registriert
18. Mai 2009
Beiträge
7
Reaktionspunkte
2
Punkte
1
Hallo Forumsmitglieder,

ich sitze hier gerade an einem Versuch und komme nicht weiter, sehe meinen Fehler nicht und hoffe ihr könnt mir helfen.
Bei dem Versuch einen MS SQL Docker Container zu starten, erhalte ich immer wieder Fehlermeldungen die darauf zeigen, dass der Remote zur Verfügung gestellte Ordner des Hosts keine Schreibrechte besitzt. Ich kann mir allerdings nicht zusammenreimen, wie die Einstellungen vorgenommen werden müssen.

Mein Vorhaben:
Ich möchte auf meinem NAS einen Docker MSSQL 2019 Container zum laufen bringen, der die Daten persistent speichert.

Ausgangslage:
Synology 1515+ 16GB RAM //frisch aufgesetzt - Updates durchgeführt - LAN Bond eingestellt - Pool und Volume eingerichtet (raid5, ext4)- Docker installiert - SSH aktiviert

Vorgehen:
1. Via SSH einloggen && Docker Image ziehen (sudo docker pull mcr.microsoft.com/mssql/server:2019-latest)
2. In die Synology Oberfläche wechseln und in der Docker Administration -> Image -> Doppelklick auf das neue Image "mssql/server:2019-latest"
3. Etwaige Einstellungen vornehmen:
  • General Settings -> Container Name -> etwasBeliebiges
  • General Settings -> Enable Ressource Limitation -> Memory Limit 8192MB
  • Open Advanced Settings:
  • Volume -> add Folder -> Subfolder "mssql_dev" im Ordner "docker" (//wurde scheinbar bei Installation Docker angelegt) erstellt. -> "mssql_dev" ausgewählt und hinzugefügt
  • Volume -> Mount Path von "docker/mssql_dev" -> "/var/opt/mssql/data"
  • Port Settings -> Local Port von "Auto" bei Container Port "1433" auf "1433" (Auto:1433 -> 1433:1433) geändert.
  • Environment -> + -> "MSSQL_SA_PASSWORD" -> "<beliebiges Passwort>"
  • Environment -> + -> "ACCEPT_EULA" -> "Y"
4. Container starten
5. via Microsoft SQL Server Management Studio (MSSMS) Datenbank anlegen


Erwartetes Ergebnis:
Container läuft, legt Datenbankdatei in entsprechendem Ordner ab.

Fehlerhaftes Ergebnis:
Beim starten des Containers und anlegen der Standarddateien, wird der Container unerwartet gestoppt. Das Logfile zeigt folgende Einträge:
Code:
SQL Server 2019 will run as non-root by default.
2021-03-14 19:30:35.38 Server      Setup step is copying system data file 'C:\templatedata\master.mdf' to '/var/opt/mssql/data/master.mdf'.
2021-03-14 19:30:35.52 Server      ERROR: Setup FAILED copying system data file 'C:\templatedata\master.mdf' to '/var/opt/mssql/data/master.mdf':  2(The system cannot find the file specified.)
ERROR: BootstrapSystemDataDirectories() failure (HRESULT 0x80070002)

Bisherige Lösungsversuche:
- Weglassen des Remote Volumes -> Container startet korrekt (Daten sind halt nicht persistent)
- Übergabe des Environment Parameters "u" mit dem Wert "1024:100" -> Microsoft schreibt das die Übergabe des zu verwendenden Nutzers und der Gruppe dies per "-u UserID:GroupID" geschehen soll. Ich befürchte jedoch, dass der parameter durch die Oberfläche wohl eher als "-e u:1024:100 (o.ä.) übergeben wird. Habe dies allerdings aufgrund von fehlendem Wissen der Möglichkeiten zur Überprüfung (Unter der Annahme es würde ja einen Fehler erzeugen) nicht weiter verfolgt-
- Mounten eines anderen Verzeichnisses der Synology
- Erweitern der Rechte des Gemeinsamen Ordners der Synology
- Starten des Containers über SSH -> wurde durch das System unterbunden (Fehler Verzeichnis mounten)
- Mounten des gesamten remote-Verzeichnisses /var/opt/mssql
- Anfügen von Slashes bei Volume -> Mount Path von "docker/mssql_dev" -> "/var/opt/mssql/data/"
- Anderes Dcoker Image (2019-CU6-ubuntu-16.04)


Quellen:
Microsoft -> https://docs.microsoft.com/en-us/sq...rver-ver15&preserve-view=true&pivots=cs1-bash
https://blog.sqlxdetails.com/sql-server-2017-on-docker-inside-synology-ds918/
 
Zuletzt bearbeitet:
  • Like
Reaktionen: azche24
Ich befürchte jedoch, dass der parameter durch die Oberfläche wohl eher als "-e u:1024:100 (o.ä.) übergeben wird.
Schöne Idee, aber nicht der richtige Weg. Der Parameter heisst tatsächlich -u und muss auch als solcher übergeben werden. Die UI bietet die entsprechende Option nicht an. Der Parameter ist verwendbar mit Portainer oder über die Kommandozeile mit docker run. Docker-Compose kennt dafür das user: Element.
 
  • Like
Reaktionen: Ulfhednir
Hi haydibe,
Hi Ulfhednir,
Hi Alle,

habe mich weiter dem Problem gewidmet, insbesondere dem Versuch das ganze von der Kommandozeile zum laufen zu bekommen. Letztlich habe ich die Gruppe weggelassen, während ich den Container von der Kommandozeile starte - ERFORLG! Mein Problem ist somit gelöst.

Code:
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=KennwortNachRichtinie-hier" -p 1433:1433 -v /volume1/docker/mssql/express:/var/opt/mssql/data -u 1024 --name mssql -h mssql mcr.microsoft.com/mssql/server:2019-latest

Nach starten des Containers über die Kommandozeile, ist der Container in der GUI sicht- und steuerbar
 
  • Like
Reaktionen: azche24
Die Gruppe kann man in Container getrost weglassen.

Die UI unterstützt nur eine Teilmenge der Docker-Parameter. Sobald man bei einem über die nicht UI gestarteten Container nachträglich Einstellungen ändert, normalisiert die UI die Container-Einstellungen auf die Teilmenge die es kennt... Hier solltest Du ein Auge darauf haben ob die -u Einstellung auch "wegnormalsiert" wird.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat