In Diskussion MSSQL Server Linux/Docker

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.332
147
Küps
Genau den Fehler hatte ich auch, vor knapp 2 Wochen hatte ich den Fehler behoben, leider mir keine Doku dazu gemacht.
Gerade habe ich den Import über das MSSQL Studio gemacht und kann nun mit der DB arbeiten auf den VServer. Geschwindigkeit ist für mich okay.
Ein Import über JTL-Datenbankverwaltung sowie auch ein anlegen brachte mir gerade nur Fehler ein.

Werde die Tage nochmal mich ransetzen und auch ein neuanlegen wieder testen und versuchen es zu beheben mit Doku.
 

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.332
147
Küps
Morgen arbeitet mein Kunde das erste mal mit 3-4 Clients auf den VServer und ich werde mal über Portainer den Speicher usw beobachen. Dann kann ich euch mehr sagen bezüglich Speed und auslastung.
 

TDS2018

Sehr aktives Mitglied
25. Oktober 2018
496
75
@web-seo-consulting
Könntest Du mir bitte die einige Infos über Deine Installation durchgeben?
1) Unter welchem OS läuft JTL-Wawi und auf welchem Linux hast Du den SQL-Server (evtl. um welche Version des SQL es sich handelt)
2) Welche Einstellungen hast Du im ODBC
3) Benutzt Du irgendwelche Zertifikate, um auf den SQL-Server zuzugreifen

Ich habe immer noch diesen verflixten Fehler beim Connect der Wawi an den SQL. Da aber auch andere das gleiche Problem hatten, und zwar am SQL der am MS-Server lief, bin ich guter Dinge, daß das Problem an meiner lokalen Installation (Windows 10) hängt. Und da Enrico zu früh abgewunken hat (siehe mein anderer Beitrag), würde ich mich freuen, wenn wir Externe es schaffen würden, die Wawi an einem Linux-SQL zum Laufen bekommen würden :)
 

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.332
147
Küps
1) Unter welchem OS läuft JTL-Wawi und auf welchem Linux hast Du den SQL-Server (evtl. um welche Version des SQL es sich handelt)
Wo die Wawi läuft ist doch egal aber gerne kann ich dir sagen das diese unter Windows 10 im Büro läuft
Der Server ist ein Debian 10 minimal mit nur SSH und Docker
Im Docker läuft MSSQL 2017 mit Ubuntu wie es ja auch von Microsoft angeboten wird.


Im ODBC gebe ich gar nichts an, das ist doch seit VErsion X von JTL-Wawi hinfällig sondern in der Datenbankverwaltung von JTL wird nur die IP genutzt und der User "sa" sowie ein 24 stelliges Passwort


3) Benutzt Du irgendwelche Zertifikate, um auf den SQL-Server zuzugreifen
Nein benutze ich nicht
 

TDS2018

Sehr aktives Mitglied
25. Oktober 2018
496
75
@web-seo-consulting
Danke für die Info. Ich dachte mir in der Theorie, daß es so funktionieren sollte. Da ich aber die besagte Fehlermeldung bekomme (ich hänge sie nochmal an)Screenshot - 07.11.2020 22_40_30.png und nach Deiner Info ausgeschlossen werden kann, daß das Problem am ODBC oder in den Einstellungen liegt, fällt mir nur noch ein, daß ich die Datenbank selbst am SQL-Server falsch eingerichtet habe. Leider habe ich bislang nicht herausfinden können, wie man die JTL-Datenbank an einem SQL-Server (nicht Express) einrichtet. Wenn ich in die JTL-Datenbankverwaltung gehe, dann finde ich nur die Einrichtung für SQL Express. Daher habe ich mit dem SSMS das Backup meiner lokalen SQL-Express-Datenbank erstellt und diese dann mit SSMS am SQL-Server zurückgespielt. Ich kann auch von meiner Windows 10- Workstation mit dem SSMS auf den SQl zugreifen, aber eben nicht mit der JTL-Wawi. Möglichweise wurde meine Datenbank nicht richtig zurückgespielt. Auch wenn ich den Vorgang zwei Mal gemacht habe.

Der einzige Unterschied, der mir noch auffällt ist, daß meine lokale (derzeit als einzige funktionierende) auf der Windows 10 Installation am SQL-Express Datenbank den Name RECHNERNAME\JTLWAWI (SQL Server 14.0.2027 - sa) anzeigt, während die Installation am SQL-Server (CentOS) "nur" IP-ADRESSE (SQL Server 15.0.4073.23 - sa), also ohne Instanz. Man merkt, daß ich kein SQL-Spezialist bin, sonst wüßte ich, wieso es dort keine "JTLWAWI"-Instanz gibt und wie man es hinbekommt...

Wie hast Du die Einrichtung der JTL-Datenbank am SQL vorgenommen?
 
Zuletzt bearbeitet:

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.332
147
Küps
Ich denke es ist besser wir telefonieren die Tage mal. Weil soweit ich das mitbekomme verwechselst du da einiges oder bringst was durcheinander.
 

_jb_

Aktives Mitglied
2. Dezember 2020
24
7
Hallo Allerseits,
bin gestern über diesen Beitrag gestoßen und bin begeistert, dass das ganze so gut mit JTL Wawi und einer Linux MS SQL Datenbank funktioniert. Ist es ok, hier noch eine Frage zu stellen?

Zuerst mal die Technischen Daten (alles noch im Testsetup):

Verwende eine Debian 10 VM mit neuster Dockerversion, und dieser Konfiguration:

Code:
---
version: '3.6'

services:
    mssql:
        container_name: mssql-wawi
        image: mcr.microsoft.com/mssql/server:2019-latest
        volumes:
            - "./mssql:/var/opt/mssql"
        ports:
            - "11434:1433"
        restart: unless-stopped
        environment:
            - ACCEPT_EULA=Y
            - SA_PASSWORD=SicheresPW
            - MSSQL_PID=Express

Zuerst hatte ich bestehende eazybusiness.mdf und eazybusiness_log.ldf in den mssql/data Ordner rein gepackt und mit dem Managment Studio per Anfügen registriert. Nach dem Einrichten in JTL Wawi und dem ersten testen kam dann die Meldung, dass die Collation sich geändert hat. Also bin ich in die JTL-Datenbankverwaltung rein, auf Mantanten reparieren und habe dort die Reparatur gestartet. Nach dem erfolgreichen Vorgang Collation reparieren kam eine Fehlermeldung bei Kundensuche reparieren. Habe danach den Vorgang wiederholt und da schien alles gut durch zulaufen.
Das Problem war nun, als ich ins Programm zurück bin, jede Datenbankabfrage ewig gedauert hat und die Debian VM ein CPU Kern auf 100% ausgelastet hatte.

Dann habe ich noch mal eine Datenbank aus der Windows SQL Installation mittels Wawi exportiert und in die Container Installation importiert. Anschließend kam wieder die Meldung, dass die Collation sich geändert hat. Also bin ich wieder zu Mantanten reparieren. Dort kam wieder ein Fehler bei Kundensuche reparieren, diesmal habe ich aber die Reparatur kein zweites Mal ausgeführt, sondern den Assistenten gleich geschlossen.
Wenn ich jetzt in der Wawi navigiere scheint der Datenbankzugriff normal zu sein. Auch konnte ich keine erhöhte CPU Last beobachten.

Jetzt ist meine Frage: Lag die hohe CPU Auslastung beim ersten mal an der anderen Art der Datenbankeinbindung, oder an dem Versuch die Kundensuche zu reparieren? Habt ihr ähnliches Beobachtet?

Generell würde ich lieber die Datenbank im Container laufen lassen, von der Administration her würde mir das sehr entgegen kommen. Allerdings darf sowas wie hohe CPU Auslastung und langes Warten im Produktivbetrieb nicht vorkommen. Daher möchte ich vorher die Fehler ausschließen.

Edit: das wie man die Datenbank importiert und ob die Mantanten repariert werden, oder nicht scheint keine Rolle zu spielen - habe wieder das gleiche Problem. Anfragen dauert ewig und CPU vom docker host ist 100% ausgelastet.
 
Zuletzt bearbeitet:

ekpegleg

Gut bekanntes Mitglied
20. April 2016
108
10
Berlin
Hallo Allerseits,
bin gestern über diesen Beitrag gestoßen und bin begeistert, dass das ganze so gut mit JTL Wawi und einer Linux MS SQL Datenbank funktioniert. Ist es ok, hier noch eine Frage zu stellen?

Zuerst mal die Technischen Daten (alles noch im Testsetup):

Verwende eine Debian 10 VM mit neuster Dockerversion, und dieser Konfiguration:

Code:
---
version: '3.6'

services:
    mssql:
        container_name: mssql-wawi
        image: mcr.microsoft.com/mssql/server:2019-latest
        volumes:
            - "./mssql:/var/opt/mssql"
        ports:
            - "11434:1433"
        restart: unless-stopped
        environment:
            - ACCEPT_EULA=Y
            - SA_PASSWORD=SicheresPW
            - MSSQL_PID=Express

Zuerst hatte ich bestehende eazybusiness.mdf und eazybusiness_log.ldf in den mssql/data Ordner rein gepackt und mit dem Managment Studio per Anfügen registriert. Nach dem Einrichten in JTL Wawi und dem ersten testen kam dann die Meldung, dass die Collation sich geändert hat. Also bin ich in die JTL-Datenbankverwaltung rein, auf Mantanten reparieren und habe dort die Reparatur gestartet. Nach dem erfolgreichen Vorgang Collation reparieren kam eine Fehlermeldung bei Kundensuche reparieren. Habe danach den Vorgang wiederholt und da schien alles gut durch zulaufen.
Das Problem war nun, als ich ins Programm zurück bin, jede Datenbankabfrage ewig gedauert hat und die Debian VM ein CPU Kern auf 100% ausgelastet hatte.

Dann habe ich noch mal eine Datenbank aus der Windows SQL Installation mittels Wawi exportiert und in die Container Installation importiert. Anschließend kam wieder die Meldung, dass die Collation sich geändert hat. Also bin ich wieder zu Mantanten reparieren. Dort kam wieder ein Fehler bei Kundensuche reparieren, diesmal habe ich aber die Reparatur kein zweites Mal ausgeführt, sondern den Assistenten gleich geschlossen.
Wenn ich jetzt in der Wawi navigiere scheint der Datenbankzugriff normal zu sein. Auch konnte ich keine erhöhte CPU Last beobachten.

Jetzt ist meine Frage: Lag die hohe CPU Auslastung beim ersten mal an der anderen Art der Datenbankeinbindung, oder an dem Versuch die Kundensuche zu reparieren? Habt ihr ähnliches Beobachtet?

Generell würde ich lieber die Datenbank im Container laufen lassen, von der Administration her würde mir das sehr entgegen kommen. Allerdings darf sowas wie hohe CPU Auslastung und langes Warten im Produktivbetrieb nicht vorkommen. Daher möchte ich vorher die Fehler ausschließen.

Edit: das wie man die Datenbank importiert und ob die Mantanten repariert werden, oder nicht scheint keine Rolle zu spielen - habe wieder das gleiche Problem. Anfragen dauert ewig und CPU vom docker host ist 100% ausgelastet.

Hast Du die Collation mal mit angegeben beim erstellen des Containers?
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=XXXXX
- MSSQL_PID=Express
- MSSQL_LCID=1031
- MSSQL_COLLATION=Latin1_General_CI_AS
......
 

_jb_

Aktives Mitglied
2. Dezember 2020
24
7
Nein hatte ich nicht versucht, danke für den Tipp! Ein Tag später konnte ich das Phänomen auch nicht mehr beobachten.
 

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.332
147
Küps
Ja das ist ja das traurige das JTL in keiner Doku offiziell erwähnt das diese Collation wichtig ist.
Mir hat es deswegen "falsche Collation" auf einen Windows Server (englische Version) von Contabo (der ein deutsches Sprachfile hatte) und deswegen nicht dir richtige Collation hatte beim installieren nach 1,5 Jahren bei eine Update die Datenbank zerstört.
Weil zu den Zeitpunkt beim Update was diese wichtig aber nicht gegeben.
 

Powalowski

Sehr aktives Mitglied
20. Januar 2019
177
196
Ja das ist ja das traurige das JTL in keiner Doku offiziell erwähnt das diese Collation wichtig ist.
Mir hat es deswegen "falsche Collation" auf einen Windows Server (englische Version) von Contabo (der ein deutsches Sprachfile hatte) und deswegen nicht dir richtige Collation hatte beim installieren nach 1,5 Jahren bei eine Update die Datenbank zerstört.
Weil zu den Zeitpunkt beim Update was diese wichtig aber nicht gegeben.
Das sollte -UNBEDINGT- im Installationsdialog von JTL erscheinen und nicht irgendwo in einer Doku!
 

sebjo82

Sehr aktives Mitglied
3. Juni 2021
595
172
Code:
IF ((SELECT CONVERT (varchar(256), SERVERPROPERTY('collation'))) <> 'Latin1_General_CI_AS')

ungleich -> Setup stoppen und Fehler beheben
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.709
515
Ich geh mal weiter: Das sollte -UNBEDINGT- im Installationsdialog von JTL als Anforderung geprüft werden und nicht nur irgendwo in einer Doku stehen!
dann geh ich auch nochmal weiter:
Das sollte -UNBEDINGT- im Installationsdialog von JTL als Anforderung geprüft werden und nicht nur irgendwo in einer Doku stehen! und auch beim Datenbank erstellen gleich richtig angegeben werden ( also sowas wie CREATE DATABASE easybusiness COLLATE Latin1_General_CI_AS;)
 
  • Ich liebe es
  • Gefällt mir
Reaktionen: Powalowski und sjk

SHKiel

Mitglied
22. Juli 2023
9
0
Kann jemand sagen, ob das auch mit btrfs Dateisystem funktioniert? Ich verwende dieses Filesystem auf meinem Host (Synology).

Es läuft seit langer Zeit in meinem Docker Container aber durch einen Fehler beim damaligen Einrichten, liegt /var/opt/mssql/data/ (und auch alles andere) im Container und nicht auf dem Host. Heute wollte ich das fixen, aber egal wie ich es probiere, erhalte ich diesen Fehler beim Backup bzw. beim Installieren eines Updates:
Die Prüfung der Datenbank ist fehlgeschlagen
Eine Datenbank-Momentaufnahme kann aufgrund eines Fehlers beim Starten nicht erstellt werden.
Eine Datenbank-Momentaufnahme kann aufgrund eines Fehlers beim Starten nicht erstellt werden.
Die Datei "/var/opt/mssql/data/eazybusiness.mdf_MSSQL_DBCC6" kann nicht in eine Datei mit geringer Dichte konvertiert werden. Stellen Sie sicher, dass das Dateisystem Dateien mit geringer Dichte unterstützt.
Die Datenbank-Momentaufnahme für Onlineüberprüfungen konnte nicht erstellt werden. Die Ursache wird in einem vorherigen Fehler beschrieben, oder eines der zugrunde liegenden Volumes unterstützt Dateien mit geringer Dichte oder alternative Datenströme nicht. Es wird versucht, exklusiven Zugriff zu erhalten, um die Überprüfung offline auszuführen.

Das Installieren eines Updates war bisher immer möglich und sollte auch gerne weiterhin möglich sein. Liegt es an meinem Dateisystem?
 

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.332
147
Küps
Kann jemand sagen, ob das auch mit btrfs Dateisystem funktioniert? Ich verwende dieses Filesystem auf meinem Host (Synology).

Es läuft seit langer Zeit in meinem Docker Container aber durch einen Fehler beim damaligen Einrichten, liegt /var/opt/mssql/data/ (und auch alles andere) im Container und nicht auf dem Host. Heute wollte ich das fixen, aber egal wie ich es probiere, erhalte ich diesen Fehler beim Backup bzw. beim Installieren eines Updates:


Das Installieren eines Updates war bisher immer möglich und sollte auch gerne weiterhin möglich sein. Liegt es an meinem Dateisystem?
Das Dateisystem ist doch total egal!!

Dein Fehler war und ist das du im docker das Volume nicht richtig gesetzt hast, bzw nicht persistent gemountet hast!!
 

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.332
147
Küps

csaeum

Sehr aktives Mitglied
23. Juli 2011
1.332
147
Küps
hier mal meine docker-compose.yaml auch gleichzeitig mit einen Backup Dienst.
volumes:
mssql-data:
driver: local-persist
driver_opts:
mountpoint: ${CONTAINERVOLUMES}/mssql
mssql-backup:
driver: local-persist
driver_opts:
mountpoint: ${CONTAINERVOLUMES}/backup

services:
db:
container_name: JTL-${COMPOSE_PROJECT_NAME}-MSSQL
image: mcr.microsoft.com/mssql/server:20xx-GA-ubuntu
user: root
environment:
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: ${MSSQL_ROOT_PASSWORD}
# "Developer" or "Express" or "Standard"
MSSQL_PID: XXXXXXX
MSSQL_LCID: 1031
MSSQL_COLLATION: Latin1_General_CI_AS
TZ: Europe/Berlin
MSSQL_DATA_DIR: /var/opt/mssql/data
MSSQL_LOG_DIR: /var/opt/mssql/ log
ports:
- 1433:1433
- 49200:1433
restart: ${RESTART}
volumes:
- mssql-data:/var/opt/mssql
- mssql-backup:/backup

backup:
container_name: JTL-${COMPOSE_PROJECT_NAME}-Backup
image: bbtsoftwareag/mssql-backup
# for using the cleanup feature, use the backup volume from db.
volumes:
- mssql-backup:/backup
environment:
BACKUP_AGE: 3
BACKUP_CLEANUP: "true"
CRON_SCHEDULE: 00 06,12,18 * * *
DB_NAMES: eazybusiness
DB_SERVER: db
DB_PASSWORD: ${MSSQL_ROOT_PASSWORD}
DB_USER: SA
PACK: "zip"
TZ: Europe/Berlin
restart: ${RESTART}
networks:
- default

Hier dann die .env
COMPOSE_PROJECT_NAME=Dienstname
CONTAINERVOLUMES=/home/XXXXXXX/volumes
MSSQL_ROOT_PASSWORD=XXXXXXXX
 

SHKiel

Mitglied
22. Juli 2023
9
0
Danke für die Rückmeldung!
Das Dateisystem ist doch total egal!!

Dein Fehler war und ist das du im docker das Volume nicht richtig gesetzt hast, bzw nicht persistent gemountet hast!!
Ich hatte hier was von ext4 gelesen, daher die Frage.

Um den Fehler zu beheben, habe ich heute das folgende probiert:
1. Neuen Container erstellt mit persistent gemounteten Ordnern auf dem host für data und backup.
2.a Kopieren des Inhalts von /data aus dem alten Container in den gemounteten Ordner auf dem host
2.b das Einspielen eines Backups von dem bisherigen Container per SQL Management Studio
2.c das Einspielen eines Backups von dem bisherigen Container per Jtl Datenbankverwaltung

Das Ergebnis war stets, dass die DB lief und die Daten für JTL Wawi wie bisher verfügbar waren. Es wurden entsprechende Daten in dem data Ordner auf dem host erzeugt.
Leider war es aber nicht möglich Backups in der jtl Datenbankverwaltung oder im Rahmen eines jtl Updates zu machen, obwohl ich als Ziel den Pfad gewählt hatte, der vom host gemountet wird.

Wo ist der Fehler?
 

Ähnliche Themen