MS SQL Server Express - Linux-Variante via Docker

Status
Für weitere Antworten geschlossen.

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Hat irgendjemand schon einmal die Linux-Variante des MS SQL Server Express in Docker in einer NAS von Synology zum Laufen gebracht?

Hab eine DS916+ und bei mir kommt die Fehlermeldung: "Docker Container: /microsoft-mssql-server-linux1 unexpected stopped". Nach dem Start wird der Container sofort wieder gestoppt.
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Ach so - ich hab übersehen, dass man da noch Variablen bei "Umwelt" (lustige Übersetzung) eingeben muss:
https://hub.docker.com/r/microsoft/mssql-server-linux/

Screenshot.JPG


Jetzt läuft es... allerdings bekomme ich noch keine Verbindung über das MS SQL Management Studio mit dem SQL Server. Hier wäre interessant, wie die Instanz heißt.
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Jetzt bin ich auch da fündig geworden... vielleicht hilft es ja auch mal jemand anderes. Die Standardinstanz heißt wie üblich "SQLEXPRESS". Allerdings muss man statt dem Port 1433 den Port angeben, der unter "Details" in Docker bei "Lokaler Port" angezeigt wird. Bei mir ist das jetzt 32771. Nutzername ist ja wie immer "sa" und als Kennwort nimmt man das in der Umgebungsvariable verwendete Kennwort. Damit kann ich mich verbinden. Auf dem Screenshot seht ihr auch den aktuellen Ressourcenverbrauch. Mit knapp 2 % CPU-Auslastung und fast 600 MB RAM geht das bei der DS916+ mit 8 GB RAM eigentlich.

Screenshot1.JPG

Screenshot2.JPG
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Mmm - ein Problem bleibt mir gerade noch. Wie stelle ich meine Datenbank wieder her? Normalerweise geht das unter "Datenbanken" dann "Datenbank wiederherstellen" und zuletzt der Auswahl eines Sicherungsmediums. Allerdings muss diese Sicherung lokal liegen. Lustigerweise wird mir auch ein "C:\"-Laufwerk angezeigt - offensichtlich ist das aber der Inhalt des Docker-Abbildes. Und aus diesem "C:"-Laufwerk kommt man nicht raus um das Sicherungsmedium auf dem NAS auswählen zu können.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Aus einem Docker-Container kommt man nicht "raus" in das Host-Filesystem. Der vorgesehene Weg um Daten zwischen Host und Container auszutauschen ist über Volumes. Dabei kann ein Host-Pfad (oder reine Daten-Container) an einen Pfad in den Container gemountet werden. Für den Container sieht es dann wie ein lokaler Pfad aus, obwohl die tatsächlichen Daten des Verzeichnisses ausserhalb des Containers liegen.
 
Zuletzt bearbeitet:

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
So - nach einiger Suche bin ich auch hier fündig geworden. Man muss beim Docker-Container auf "bearbeiten" gehen und dann den Punkt "Container mit hoher Priorität ausführen" anhaken. Danach unter "Volume" gehen, dann "Ordner hinzufügen" und dann den Ordner auswählen, in welchem die benötigten Dateien liegen. Als Mount-Pfad habe ich /var/opt/mssql/data eingetragen - das ist genau der Pfad, in dem auch die Daten des SQL-Servers liegen.

Wenn man jetzt den Container startet, dann kann man die Datei aus dem Verzeichnis auswählen und die Wiederherstellung der Datenbank ("Restore Database") wie gewünscht durchführen. Danach den Container stoppen und den Pfad und die "hohe Priorität" wieder entfernen.
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Danke für die Info. Ich hatte ganz übersehen, dass Du oben schon eine Antwort geschrieben hast. Da hätte ich mir die Suche auch einfacher machen können...
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Jetzt hab ich doch nochmal eine Anmerkung. Denn meine schönen Datenbanken waren beim nächsten Start nicht mehr da. Ich dachte eigentlich, dass die in das Verzeichnis innerhalb des Containers kopiert worden sind. Tatsächlich hab ich die Dateien aber "wieder mitgenommen".

Der Pfad
/var/opt/mssql/data
ist demnach nicht günstig

Vielmehr sollte man irgendetwas wie
/var/opt/mssql/Sicherung
nehmen.

Im Anschluss an die Wiederherstellung konnte ich dann auch das Ziel erreichen: mit Access als Frontend auf eine umfangreiche Datenbank zugreifen, die in Docker auf dem MS SQL Server läuft. Erste Erkenntnis: die RAM-Nutzung steigt im regulären Betrieb auf ca. 814 MB. Die CPU-Last steigt bei intensiven Abfragen nicht mehr als auf 3 %. Insgesamt kann man mit der Konstellation sehr flüssig arbeiten - Listen erstellen, Berichte ausgeben... alles kein Problem.

Eine Kleinigkeit fehlt aber noch: ich konnte mich leider nur mit dem sa-Konto anmelden. Die anderen Konten hab ich zwar angelegt, aber damit war die Verbindung über Access bzw. den Server Manager nicht möglich. Wenn da noch jemand eine Idee hat, einfach melden.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Ich muss sagen, dass mir Microsoft in letzter Zeit immer sympatischer wird... erst tun sie nichts gegen mono und portieren dann selber .net nach Linux, dann noch Visual-Studio und jetzt noch den SQL-Server... nice :) Das mit dem SQL-Server habe ich bis heute gar nicht gewusst. Vorallem im Container noch deutlich charmanter, da es das Arbeitsgerät nicht mit diversen Prozessen zusätzlich belastet und klar ist was wo liegt... Der SQL-Server ist technische Leistungsfähig und am Puls der Zeit ohne einen gleich finanziell zu ruinieren... Schon mal Versucht 'ne Oracle-Lizenz für Testumgebungen zu lizenzieren?

Ich würde /volume1/docker/mssql/data gegen /var/opt/mssql/data mappen, genau mit dem Ziel die Datenbank-Datei ausserhalb des Container zu haben. Bei nem Container Update behälst Du dann dort die Daten OHNE wieder ein Backup einspielen zu müssen. Kann sein das es so einfach geht wie ich es mir vorstelle, evtl musst Du aber auch den von Dir gedachten Weg gehen ein anderes Verzeichnis als Volume zu mappen und mit der Import/Export-Funktion zu arbeiten.

Ich hab mal das Management Studion 17.0 RC1 von https://msdn.microsoft.com/library/mt238290.aspx heruntergeladen und schau mir das Problem mit Benutzerkonten mal an.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Also wenn ich mich mit dem Management Studio unter dem Benutzer SA anmelde und in "Sicherheit/Anmeldungen" über das Kontextmenü "Neue Anmeldung..." auswähle, dann kann ich einen neuen Benutzer mit "SQL Server-Authentifizierung" hinzufügen und mich danach auch mit dem anmelden.

Lass mich raten, Du hast eine Datenbank wiederhergestellt und willst Dich mit einem der dort "vorhandenen" Benutzer anmelden? Aus meiner Erinnerung weiss ich, dass es nicht ausreichend ist das nur die Datenbank die wiederhergestellten Benutzer kennt. Die wiederhergestellten Datenbank-Benutzer werden nämlich nicht in der Instanz angelegt. Das musst Du selber machen! Entweder (so wie ich bei meinem Versuch) manuell über SQL Managment Studio oder über SQL-Befehle /-Skripte.
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
2
Punkte
38
Hat irgendjemand schon einmal die Linux-Variante des MS SQL Server Express in Docker in einer NAS von Synology zum Laufen gebracht?

Nein, leider nicht hab zu wenig RAM. Ergänzen möchte ich noch, das der SQL Server [microsoft/mssql-server-linux] nicht die Bezeichnung „Express“ verdient, wenngleich es eine Instanz bei dir vermag. :confused:
Bei mir gab es keine und eine einfache Abfrage zeigt es :

Auswahl_169.jpg

Der vNext CTP, wie er wirklich heißt hier, ist ein Vorgeschmack auf den kommenden Microsoft SQL Server der unter Windows und Linux läuft.
Lizenzdetails gibt es noch keine, aber wenn du genau hinschaust kannst du den Gültigkeitszeitraum deiner Installation erkennen ;)

Als Community Technology Preview, was aus dem Namen schon hervorgeht, geht sie als Vorschauversion an Entwickler,
da auch die Liste der noch nicht verfügbaren Funktionen dementsprechenden lang ist.

Eine Express Version ist derzeit nur für Windows erhältlich, nicht aber für Linux.
Die Laufzeit ist hier nicht begrenzt und erwartungsgemäß stehen mehr Funktionen bereit.

Ich muss sagen, dass mir Microsoft in letzter Zeit immer sympatischer wird... erst tun sie nichts gegen mono und portieren dann selber .net nach Linux, dann noch Visual-Studio und jetzt noch den SQL-Server... nice :) Das mit dem SQL-Server habe ich bis heute gar nicht gewusst.

Dem kann ich mich nur anschließen, eine sehr spannenden Entwicklung.
November 2016 hab ich gleich nach Veröffentlichung einen kurzen Test unter Ubuntu begonnen, da meine DS mit 2GB RAM nicht ausreichte.

Bob
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Lass mich raten, Du hast eine Datenbank wiederhergestellt und willst Dich mit einem der dort "vorhandenen" Benutzer anmelden?

Ne das war es nicht. Ich hab die Benutzer aus der wiederhergestellten Datenbank rausgelöscht und neu erstellt. Hierfür habe ich aus der bestehenden Datenbank den CREATE-Befehl für den Nutzer verwendet. Dort wird ein Kennwort-Hash angezeigt. Ich bin davon ausgegangen, dass also auch das Kennwort übertragen wird. Darin lag der Denkfehler. Denn das Kennwort muss für den neu angelegten Benutzer tatsächlich noch einmal neu vergeben werden. Danach ging es jetzt wie gewünscht.

Die nicht unterstützten Funktionen beziehen sich vermutlich auf die volle Edition des SQL-Servers, oder? Eigentlich brauche ich für meine Datenbank nichts davon. Die Stored Procedures laufen alle sauber und auch sonst scheint alles zu funktionieren. Für mich ist das wichtigste Argument die gute Interaktion mit Access und damit die Anbindung an Office.
 

Knubbi

Benutzer
Mitglied seit
15. Nov 2017
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Hätte mal jemand ein DAU A-Z Tutorial, um das Microsoft SQL Server Docker Image auf der NAS zu installieren?
 

Jakob2408

Benutzer
Mitglied seit
12. Dez 2017
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
SQL Server Authentication funktioniert, aber wie sieht es mit der Windows-Authentication aus? Geht das überhaupt mit SQL-Linux-Docker?
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Hätte mal jemand ein DAU A-Z Tutorial, um das Microsoft SQL Server Docker Image auf der NAS zu installieren?

Also die einzelnen Schritte hab ich ja oben beschrieben. Schreib doch einfach, wo genau Du noch Verständnisprobleme hast.
 

otti-o

Benutzer
Mitglied seit
22. Feb 2016
Beiträge
10
Punkte für Reaktionen
0
Punkte
1
MS-SQL mit Docker auf Synology HowTo

Hätte mal jemand ein DAU A-Z Tutorial, um das Microsoft SQL Server Docker Image auf der NAS zu installieren?

Hier die Anleitung, wie man einen MS-SQL-Server Express auf einer Synology zum laufen bekommt.

Voraussetzungen:
* Docker >= 1.8
* RAM >= 2 GB

* Docker öffnen
* Auf "Abbild" gehen
* "Hinzufügen" -> "von URL" -> "microsoft/mssql-server-linux" eingeben
* Als Tag "2017-latest" auswählen
* Warten bis der Download fertig ist (ca. 1 GB)
* dann auf "Starten" klicken
* Bei "Containername" etwas cleveres eingeben, für diese Erklärung: "MSSQL1"
* Auf "Erweiterte Einstellungen" klicken
* Auf Reiter "Volume" gehen
* "Ordner hinzufügen" klicken und als erstes das Verzeichnis auswählen, in dem die Datenbank später auf der NAS liegen soll, für diese Erklärung "docker/mssql/var/opt/mssql/data" und mit "auswählen" bestätigen.
* Als "Mount-Pfad" "/var/opt/mssql/data" eingeben
* Auf Reiter "Port-Einstellungen" wechseln und als "Lokaler Port" "1433" eintragen
* Auf Reiter "Umwelt" gehen und auf "+" klicken um folgende Wertepaare einzutragen:
"MSSQL_PID" "Express"
"SA_PASSWORD" Hier ein sinnvolles Passwort eintragen, für diese Erklärung "Test1234!"
"ACCEPT_EULA" "Y"
* Zum Abschluss mit "Übernehmen" und "Weiter" den Assistenten beenden

Jetzt habt ihr einen laufenden MS-SQL-Server 2017 Express, der auf der IP eurer NAS auf Port 1433 hört. Ihr könnt die Daten normal sichern, indem ihr nach einem Stopp der VM den vorher angegebenen Ordner sichert (hier docker/mssql/var/opt/mssql/data). Nachher wieder starten nicht vergessen. ;-)

Zum Nachlesen:
https://docs.microsoft.com/de-de/sql/linux/quickstart-install-connect-docker?view=sql-server-2017
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Interessant wäre noch, wie man Aktualisierungen des Docker-Image des SQL-Servers einspielt. Muss man dazu den vorherigen Container entfernen und dann wieder einspielen?
 

otti-o

Benutzer
Mitglied seit
22. Feb 2016
Beiträge
10
Punkte für Reaktionen
0
Punkte
1
Dadurch dass das Datenverzeichnis äußerhalb der VM ist kannst du auch ein anderes Image nehmen, es wie gehabt einspielen und am Schluss wieder den Daten-Pfad nach draußen mounten. Sollte anstandslos laufen. Und dadurch, dass das Target "2017-latest" heißt, sollte automatisch das aktuelle Image gezogen werden. Ob es tatsächlich so ist werden wir erfahren sobald ein neues Update rauskommt.
 

otti-o

Benutzer
Mitglied seit
22. Feb 2016
Beiträge
10
Punkte für Reaktionen
0
Punkte
1
Weitere Voraussetzung:
* Dateisystem: ext4 mit btrfs funktioniert es nicht!
 
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