Getestet mit JTL-Wawi bis 1.11.*

JTL-Wawi langsam? SQL-Server-Wartung, Indizes und die Grenzen der Express-Edition

Warum die JTL-Wawi mit der Zeit langsamer wird: Indizes, Statistiken, Express-Limits. Mit Diagnose-Abfragen und einem sauberen Wartungsplan.

Wichtig: Dieser Artikel enthält SQL-Befehle, die Daten in Ihrer JTL-Datenbank ändern. Legen Sie vorher eine vollständige Datensicherung an und testen Sie zuerst in einer Testumgebung. Die Anleitung beschreibt unser Vorgehen in einem konkreten Fall und ersetzt keine individuelle Prüfung Ihres Systems. Die Umsetzung erfolgt auf eigene Verantwortung – für Datenverlust, Ausfälle oder Folgeschäden übernehmen wir keine Haftung. Gern übernehmen wir die Umsetzung für Sie.

„Die Wawi war früher schneller“ – diesen Satz hören wir oft. Artikellisten bauen sich zäh auf, die Suche hängt, der Abgleich mit Shop und Marktplätzen dauert länger als gewohnt. Die Ursache liegt selten in der JTL-Wawi selbst, sondern fast immer eine Ebene darunter: im Microsoft SQL Server.

JTL stellt im JTL-Guide klar, dass der SQL Server ein eigenständiges Produkt ist und nicht Teil der JTL-Wawi – seine Wartung liegt also beim Betreiber. Wer sie nicht einplant, merkt das irgendwann an der Geschwindigkeit.

Typische Symptome

  • Übersichten (Artikel, Aufträge, Kunden) laden spürbar langsamer als früher
  • Suchen und Filter brauchen mehrere Sekunden
  • Abgleich mit Onlineshop oder Marktplätzen dauert länger
  • Mehrere Arbeitsplätze gleichzeitig bremsen sich gegenseitig aus
  • Die Datenbank wächst kontinuierlich, bei Express nähert sie sich der Größengrenze

Die häufigsten Ursachen

Symptom Ursache Lösung
Listen und Suchen werden schleichend langsamer Fragmentierte Indizes, geringe Seitendichte Indizes regelmäßig reorganisieren bzw. neu aufbauen
Einzelne Abfragen plötzlich langsam, obwohl sich wenig geändert hat Veraltete Statistiken, schlechte Ausführungspläne Statistiken regelmäßig aktualisieren
Langsam bei mehreren Benutzern, Server-RAM ist aber frei Express-Limit: max. 1.410 MB Buffer Pool, max. 4 Kerne Upgrade auf SQL Server Standard prüfen
Datenbank kann nicht mehr wachsen Express-Limit: 10 GB (bis SQL Server 2022) Daten bereinigen, Upgrade auf Standard
Server insgesamt träge, Datenträger stark ausgelastet Hardware, Datenträger, Virenscanner auf Datenbankdateien Ressourcen prüfen, Ausnahmen im Virenscanner setzen

Indizes und Statistiken

Indizes sind für den SQL Server, was das Register für ein Telefonbuch ist. Durch ständiges Einfügen, Ändern und Löschen werden sie fragmentiert: Die Daten verteilen sich auf viele halb gefüllte Seiten, der Server muss mehr lesen. Microsoft weist darauf hin, dass oft die Seitendichte (wie voll die Seiten sind) sogar mehr ausmacht als die Fragmentierung selbst.

Mindestens genauso wichtig sind Statistiken. Auf ihrer Grundlage entscheidet der SQL Server, wie er eine Abfrage ausführt. Laut JTL-Guide werden sie automatisch erst nach größeren Änderungen an einer Tabelle aktualisiert – bei großen Tabellen können sie dazwischen veralten. Microsoft beschreibt außerdem: Wer nach einem Index-Neuaufbau eine Verbesserung sieht, verdankt sie oft vor allem den dabei mitaktualisierten Statistiken – und die lassen sich deutlich günstiger auch einzeln aktualisieren.

Die Grenzen der Express-Edition

Viele kleinere Installationen laufen auf dem kostenlosen SQL Server Express. Das funktioniert – solange die Grenzen nicht erreicht sind. Laut Microsoft gilt für SQL Server 2022 Express:

  • Datenbankgröße: maximal 10 GB je Datenbank
  • Arbeitsspeicher (Buffer Pool): maximal 1.410 MB je Instanz
  • CPU: das Kleinere von 1 Sockel oder 4 Kernen

Mit SQL Server 2025 hat Microsoft das Größenlimit für Express auf 50 GB angehoben; Arbeitsspeicher- und CPU-Grenzen sind gleich geblieben. Zudem fehlt in Express der SQL Server Agent – zeitgesteuerte Wartungsaufträge laufen also nicht von selbst.

JTL weist in der Checkliste zum Umstieg auf Wawi 1.6 darauf hin, dass die Datenbank nach dem Update um mehr als 30 % wachsen kann. Wer schon nahe an 10 GB liegt, sollte das vor einem Update einplanen.

Virenscanner auf Datenbankdateien

Microsoft empfiehlt, die Datendateien (.mdf, .ndf, .ldf), Backup-Dateien (.bak, .trn) und den Prozess sqlservr.exe vom Virenscan auszunehmen – das verbessert die Leistung und verhindert, dass Dateien gesperrt sind, wenn der SQL Server sie braucht. Microsoft weist aber auch darauf hin: Infizierte Dateien in ausgenommenen Pfaden werden dann nicht erkannt. Das ist eine Abwägung, die zu Ihrem Sicherheitskonzept passen muss.

Diagnose: Wo steht Ihre Datenbank?

Alle Abfragen in diesem Abschnitt lesen nur und ändern nichts. Sie laufen in SQL Server Management Studio. eazybusiness ist der Standardname der ersten Mandanten-Datenbank – passen Sie ihn bei Bedarf an.

Edition und Version des SQL Servers:

SELECT SERVERPROPERTY('Edition')        AS Edition,
       SERVERPROPERTY('ProductVersion') AS Version;

Größe und Belegung der Datenbankdateien:

USE eazybusiness;

SELECT name                                           AS Datei,
       type_desc                                      AS Typ,
       CAST(size / 128.0 AS DECIMAL(10,1))            AS Groesse_MB,
       CAST(FILEPROPERTY(name, 'SpaceUsed') / 128.0
            AS DECIMAL(10,1))                         AS Belegt_MB
FROM sys.database_files;

Die Größe wird in 8-KB-Seiten gespeichert; geteilt durch 128 ergibt das MB. Bei Express ist vor allem die Datendatei (Typ ROWS) im Vergleich zum Limit interessant.

Fragmentierung und Seitendichte der größten Indizes (angelehnt an das Beispiel aus der Microsoft-Dokumentation):

USE eazybusiness;

SELECT TOP (30)
       OBJECT_SCHEMA_NAME(ips.object_id)  AS Schema_,
       OBJECT_NAME(ips.object_id)         AS Tabelle,
       i.name                             AS Index_,
       ips.avg_fragmentation_in_percent   AS Fragmentierung_Prozent,
       ips.avg_page_space_used_in_percent AS Seitendichte_Prozent,
       ips.page_count                     AS Seiten
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') AS ips
JOIN sys.indexes AS i
  ON i.object_id = ips.object_id AND i.index_id = ips.index_id
WHERE ips.page_count > 1000
ORDER BY ips.page_count DESC;

Kleine Indizes (unter etwa 1.000 Seiten) sind hier bewusst ausgefiltert – bei ihnen bringt Wartung kaum etwas.

Wann wurden die Statistiken zuletzt aktualisiert?

USE eazybusiness;

SELECT TOP (30)
       OBJECT_NAME(s.object_id)  AS Tabelle,
       s.name                    AS Statistik,
       sp.last_updated           AS Zuletzt_aktualisiert,
       sp.rows                   AS Zeilen,
       sp.modification_counter   AS Aenderungen_seitdem
FROM sys.stats AS s
CROSS APPLY sys.dm_db_stats_properties(s.object_id, s.stats_id) AS sp
WHERE OBJECTPROPERTY(s.object_id, 'IsUserTable') = 1
ORDER BY sp.modification_counter DESC;

Viele Änderungen seit der letzten Aktualisierung bei gleichzeitig altem Datum sind ein deutliches Zeichen für fehlende Wartung.

Lösung: ein fester Wartungsplan

Variante 1: Bordmittel der JTL-Wawi

JTL bietet die Wartung direkt in der Datenbankverwaltung an. Laut JTL-Guide: Start > Datenbank, JTL-Datenbankverwaltung öffnen, Mandant wählen, Performanceoptimierung. Dort stehen die Optionen Indizes Neuorganisieren und Neuerstellen und Aktualisierung der Statistiken zur Verfügung.

Die Empfehlung von JTL: Indizes idealerweise täglich, Statistiken wöchentlich – abends, nachts oder am Wochenende. Beim Neuaufbau ist ein Index zeitweise nicht verfügbar, die Wawi kann in dieser Zeit stocken.

Variante 2: Wartungsskript (Ola Hallengren)

Für eine automatische Wartung verweist JTL selbst auf die Maintenance Solution von Ola Hallengren. Sie ist kostenlos und enthält gespeicherte Prozeduren für Backup (DatabaseBackup), Integritätsprüfung (DatabaseIntegrityCheck) sowie Index- und Statistikpflege (IndexOptimize). IndexOptimize wartet nur Indizes, die tatsächlich fragmentiert sind, und überspringt kleine Indizes.

Ein typischer Aufruf aus der offiziellen Dokumentation:

EXECUTE dbo.IndexOptimize
    @Databases              = 'USER_DATABASES',
    @FragmentationLow       = NULL,
    @FragmentationMedium    = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
    @FragmentationHigh      = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
    @FragmentationLevel1    = 5,
    @FragmentationLevel2    = 30,
    @UpdateStatistics       = 'ALL',
    @OnlyModifiedStatistics = 'Y';

Online-Neuaufbau ist laut Microsoft nur in der Enterprise-Edition möglich. In Standard und Express greift das Skript automatisch auf den Offline-Neuaufbau zurück – der sperrt die Tabelle während der Ausführung. Deshalb gehört der Lauf zwingend außerhalb der Geschäftszeiten.

Bei SQL Server Express gibt es keinen SQL Server Agent. Ola Hallengren beschreibt für diesen Fall den Weg über .cmd-Dateien, die die Prozeduren per sqlcmd aufrufen, und die Windows-Aufgabenplanung als Zeitgeber. Prüfen Sie nach der Einrichtung, ob die Aufgaben tatsächlich erfolgreich durchlaufen.

JTL rät im selben Guide zur Vorsicht bei Datenbank-Optimierungswerkzeugen von Drittanbietern und davon ab, eigenständig in tiefere Datenbankfunktionen einzugreifen. Bleiben Sie bei den Bordmitteln des SQL Servers und den von JTL genannten Werkzeugen.

Einzelne Befehle von Hand

Für gezielte Eingriffe – etwa nach großen Importen oder Bereinigungen – genügen oft einzelne Befehle:

USE eazybusiness;

-- Einen bestimmten Index reorganisieren (online, ressourcenschonend)
ALTER INDEX [Indexname] ON dbo.tArtikel REORGANIZE;

-- Alle Statistiken einer Tabelle aktualisieren
UPDATE STATISTICS dbo.tArtikel;

-- Statistiken der gesamten Datenbank aktualisieren
EXEC sp_updatestats;

Microsoft empfiehlt, Wartung nicht pauschal, sondern gezielt einzusetzen: Erst messen, dann handeln. Häufig bringt schon das Aktualisieren der Statistiken den gewünschten Effekt – bei deutlich geringerer Last als ein vollständiger Index-Neuaufbau.

Vor jeder Wartungsmaßnahme gilt: aktuelles Backup erstellen und prüfen. Testen Sie neue Wartungsskripte zuerst auf einer Kopie der Datenbank oder einem Testmandanten, bevor sie auf dem Produktivsystem laufen.

Backup-Kette nicht vergessen

Wartung und Datensicherung gehören zusammen. JTL empfiehlt mindestens ein Backup pro Tag, gelagert an einem anderen Ort als der Server. Beachten Sie dabei:

  • Wartung nach dem Backup einplanen, nicht gleichzeitig – beide erzeugen hohe Last auf den Datenträgern.
  • Ein Index-Neuaufbau schreibt viel ins Transaktionsprotokoll. Läuft die Datenbank im Wiederherstellungsmodell „Vollständig“, werden die folgenden Protokollsicherungen entsprechend größer.
  • Wiederherstellungsmodell nicht „mal eben“ umstellen. Microsoft beschreibt: Nach einem Wechsel von „Einfach“ zurück auf „Vollständig“ beginnt die Protokollkette erst mit einer neuen vollständigen oder differenziellen Sicherung neu.
  • Backups stichprobenartig wiederherstellen – erst dann wissen Sie, dass sie funktionieren.

Wann lohnt sich das Upgrade auf SQL Server Standard?

Wartung behebt Fragmentierung und veraltete Statistiken, aber keine festen Editionsgrenzen. Ein Wechsel auf die Standard-Edition ist sinnvoll, wenn:

  • die Datenbank sich dem 10-GB-Limit von Express nähert (bei SQL Server 2022 und älter),
  • mehrere Arbeitsplätze, Worker und Abgleiche gleichzeitig arbeiten und der Server trotz freiem RAM ausgebremst wird – Express nutzt höchstens 1.410 MB Buffer Pool und 4 Kerne,
  • Sie Wartung und Backups zuverlässig über den SQL Server Agent automatisieren möchten.

Zum Vergleich nennt Microsoft für die Standard-Edition von SQL Server 2022 bis zu 128 GB Buffer Pool und das Kleinere von 4 Sockeln oder 24 Kernen. JTL empfiehlt in der Umstiegs-Checkliste für größere Datenbanken ausdrücklich eine höhere SQL-Server-Lizenz. Für Express-Installationen nennt JTL außerdem, den Arbeitsspeicher des SQL Servers auf 1 GB zu begrenzen.

SQL Server 2025 Express hebt das Größenlimit auf 50 GB an, ändert aber nichts an den Grenzen für Arbeitsspeicher und CPU. Prüfen Sie vor einem Versionswechsel in den Systemvoraussetzungen von JTL, welche SQL-Server-Versionen für Ihre Wawi-Version freigegeben sind.

Fazit

Eine langsame JTL-Wawi ist in den meisten Fällen kein Rätsel, sondern eine Wartungsfrage: Indizes pflegen, Statistiken aktuell halten, Backups sauber einplanen – und die Grenzen der Express-Edition im Blick behalten. Mit den Abfragen oben sehen Sie in wenigen Minuten, wo Ihre Datenbank steht.

Sie möchten Ihre Datenbank prüfen lassen oder einen Wartungsplan einrichten, der zu Ihren Geschäftszeiten passt? Als JTL-Servicepartner unterstützen wir Sie gern dabei – von der Diagnose bis zur Entscheidung für oder gegen ein Upgrade.

Hängt es bei Ihnen gerade?Wir schauen uns das per Fernwartung an und finden die Ursache.
Support anfragen

Häufige Fragen

Warum wird die JTL-Wawi mit der Zeit langsamer?

Meist fehlt die regelmäßige Wartung des SQL Servers. Durch ständige Änderungen fragmentieren Indizes, und Statistiken veralten. Der SQL Server wählt dann schlechtere Ausführungspläne, Listen und Suchen dauern länger. Hinzu kommen wachsende Datenmengen und – bei der Express-Edition – feste Grenzen für Arbeitsspeicher und CPU.

Wie groß darf die Datenbank bei SQL Server Express sein?

Bei SQL Server 2022 Express und älteren Versionen liegt die Grenze bei 10 GB je Datenbank. Mit SQL Server 2025 hat Microsoft sie für Express auf 50 GB angehoben. Ob Ihre Wawi-Version SQL Server 2025 unterstützt, prüfen Sie vorher in den Systemvoraussetzungen von JTL.

Wie oft sollte ich Indizes und Statistiken pflegen?

JTL empfiehlt die Indexpflege idealerweise täglich und die Aktualisierung der Statistiken wöchentlich – jeweils abends, nachts oder am Wochenende, nicht während der Hauptgeschäftszeit.

Kann ich die Wartung bei SQL Server Express automatisieren?

Ja, aber nicht über den SQL Server Agent, denn den gibt es in der Express-Edition nicht. Wartungsskripte lassen sich stattdessen per sqlcmd und Windows-Aufgabenplanung zeitgesteuert ausführen.

Sind die Diagnose-Abfragen in diesem Artikel gefährlich?

Nein. Die Abfragen im Abschnitt Diagnose lesen nur Systeminformationen und ändern nichts. Die Abfrage zur Fragmentierung kann bei großen Datenbanken aber spürbar Last erzeugen und sollte außerhalb der Geschäftszeiten laufen.

Quellen

Lassen Sie uns über Ihr JTL-Setup sprechen.

Kurz anrufen oder schreiben – im kostenlosen Erstgespräch klären wir, wo es hakt und was sinnvoll ist.