Neu SQL Abfrage wird mehrfach ausgeführt - Ausgabe in der Übersicht falsch

tom10

Sehr aktives Mitglied
2. Oktober 2012
715
107
06774 Muldestausee
Mir ist beim erstellen einer eigenen Übersicht aufgefallen, dass die SQL-Abfrage ab einer hohen Anzahl von markierten Einträgen (@Keys) wiederholt wird und damit das Ergebnis falsch ist bzw. das Ergebnis mehrfach ausgegeben wird. Getestet und gegengeprüft habe ich das bei Artikeln und Aufträgen.

Ab welcher Anzahl an markierten Artikeln/Aufträgen das Verhalten auftritt, ist unterschiedlich. Die kleinste Anzahl an markierten Artikeln/Aufträgen, bei der der Fehler bei mir auftrat, lag bei ca. 1.600. Darunter ist die Ausgabe korrekt.

Für mich ist das ein Bug. Ist das noch jemandem aufgefallen?

Simple Beispiele für Artikel
SQL:
SELECT kartikel
    FROM tArtikel
    WHERE kArtikel IN (@Keys)
    ORDER BY kArtikel ASC
und Aufträge
SQL:
SELECT kAuftrag
    FROM Verkauf.tAuftrag
    WHERE kAuftrag IN (@Keys)
    ORDER BY kAuftrag

Vielleicht weiß @Manuel Pietzsch mehr?


WaWi 1.7.15.3
 

tom10

Sehr aktives Mitglied
2. Oktober 2012
715
107
06774 Muldestausee
Laut Dokumention von Microsoft kann es bei einigen tausend Werte zu Problemen führen.
https://learn.microsoft.com/en-us/s...in-transact-sql?view=sql-server-ver16#remarks

Ein Workaround wäre laut Doku die Werte in eine Subquery zu packen.
Das ist nicht das Problem. Auch ganz ohne Filter in der Abfrage, also ein einfaches SELECT kartikel FROM tArtikel, verursacht den selben Fehler. Im SSMS funktionieren die Abfragen ohne Probleme.
 

kelvin.

Gut bekanntes Mitglied
15. Februar 2023
130
46
Frankfurt
Kann das auch bestätigen. Habe es reproduzieren können.

Im Profiler habe ich gesehen, dass der in der IN Bedingung nur 2000 Werte übernimmt und dass die Abfrage 5 Mal gestellt worden ist und deswegen in der Übersicht 5 Mal ausgegeben werden.

Es werden aber auch nicht alle Aufträge angezeigt, wenn man den Filter "Alle anzeigen" nutzt.
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
639
211
Kann das auch bestätigen. Habe es reproduzieren können.

Im Profiler habe ich gesehen, dass der in der IN Bedingung nur 2000 Werte übernimmt und dass die Abfrage 5 Mal gestellt worden ist und deswegen in der Übersicht 5 Mal ausgegeben werden.

Es werden aber auch nicht alle Aufträge angezeigt, wenn man den Filter "Alle anzeigen" nutzt.
Moin. Ich würde vorschlagen, eine Begrenzung zu verwenden: SELECT TOP (200) kArtikel FROM
 

tom10

Sehr aktives Mitglied
2. Oktober 2012
715
107
06774 Muldestausee
Moin. Ich würde vorschlagen, eine Begrenzung zu verwenden: SELECT TOP (200) kArtikel FROM
Das wird nicht funktionieren. Ich selektiere 500 und bekomme die Werte für die ersten 200?
Zudem bringt das nichts, wenn man einen Üblick über bestimmter Werte haben möchte, eventuell auch kumuliert. Was sind schon 200 oder auch 1000 Artikel. Das sind am Ende z.B. 20 oder 100 Artikel in 10 Farben. Wenn ich anfangen soll, die SQL Abfragen zu beschneiden, weil es irgendwelche Einschränkungen gibt, kann ich gleich mit der Ameise arbeiten und in Excel rumfrickeln. Dafür gibt es die eigenen Übersichten ja schließlich.

Das Problem das ich sehe, sind die SQLs die kumulierte Werte ausgeben und davon gibt es hier im Forum einige. Da fällt der Fehler nicht so schnell auf. Man vertraut der Abfrage, nimmt die Werte als gegeben aber ein Teil der Artikel/Aufträge wurde nicht berücksichtigt, oder wie hier, mehrfach ausgewertet. Das darf nicht passieren, auch nicht bei mehreren Tausend. Treten Fehler auf oder ist die Schnittstelle überlastet, muss es eine Fehlermeldung geben oder im Zweifelsfall gar keine Ausgabe. Verfälschte Werte aber keinesfalls.

Aber zurück zum Fehler. Wenn man eine einfache Abfrage wie SELECT kartikel FROM tArtikel ohne IN(@Keys) benutzt und nur einen oder wenige selektiert, stimmt das Ergebnis. Ab einer bestimmten Anzahl werden die Werte dann mehrfach ausgegeben. Der Fehler hat also nichts mit der Abfrage an sich zu tun. Das Problem entsteht bereits vorher oder an anderer Stelle.
 

John

Sehr aktives Mitglied
3. März 2012
2.653
513
Berlin
Gibts da nicht ein Limit, wie groß/lang eine SQL Anfrage sein darf?
Das Problem hat man z.B. auch, wenn man zu viele Artikel in der Auswahl auf einmal aus einer Kategorie per Rechtsklick zu entfernen versucht. Da gibt es (oder gab es früher) eine SQL Fehlermedung.
Vielleicht wird hier aufgeteilt, weil sonst die IN-Bedingung zu viele Elemente hätte. Doof, wenn das Ergebnis deshalb falsch wird.
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
639
211
Moin.
Die Query für @key/@keys wird (schon seit immer?) 2-mal verarbeitet, teilweise 2-mal ausgeführt.
Wie oben von Anderen erwähnt, für @keys gibt es nicht nur Einschränkungen seitens JTL - maximal Anzahl an Schlüsseln, maximale "Laufzeit" für Regex-Suche in der Query, usw.
sondern auch von Microsoft: für IN - MS schreibt von Tausenden, wir hatten schon Probleme bei mehr als 2000, überhaupt ist IN-Performance bei vielen Werten sehr schlecht,
Oracle schränkt Werte für IN auf maximal 1000, nicht ohne Grund; für Abfragen/WHERE-Klauseln/ORDER BY/usw.: gelten technisch-/hardware-bedingt Größeneinschränkungen:
s. https://learn.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server.
 
Zuletzt bearbeitet:
Ähnliche Themen
Titel Forum Antworten Datum
SQL Abfrage für verkaufte Artikel + aktueller Bestand JTL-Wawi 1.8 1
Datenbank-Abfrage per SQL nach Lagermenge pro Artikel & Warenbereich (WMSLager) JTL-Wawi 1.8 1
Beantwortet #GEFUNDEN# Suche jemand , der uns eine (automatische) SQL Abfrage erstellen kann mit Mail Ausgabe Dienstleistung, Jobs und Ähnliches 2
Neu SQL-Abfrage bei Kundenanlage JTL-Wawi 1.7 2
Neu CSV-Datei direkt in einer SQL-Abfrage verwenden User helfen Usern - Fragen zu JTL-Wawi 3
Neu SQL Abfrage in Excel User helfen Usern - Fragen zu JTL-Wawi 12
Neu SQL Abfrage Artikelbezeichnung auf Englisch für Artikeletikett User helfen Usern - Fragen zu JTL-Wawi 4
Neu Wie kann man Anzahl der VPE per SQL abfragen? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Kundendatenimport via SQL JTL-Wawi 1.6 1
Neu SQL Ausgabe Bestellinformationen JTL Ameise - Eigene Exporte 4
Neu SQL Script - geänderte Tabellen. User helfen Usern - Fragen zu JTL-Wawi 3
Wie kann ich etwas in der WAWI Datenbank per SQL ändern? JTL-Wawi 1.8 2
Neu Logfile: SQL Fehler, aber warum? JTL-Shop - Fehler und Bugs 2
Neu Erstinstallation JTL WaWi 1.8.12 - heruntergeladen wird SQL Express 2017 _statt_ der empfohlenen 2022 Version Installation von JTL-Wawi 8
Neu MS SQL Server 2022 oder MS SQL Server 2022 Express? Installation von JTL-Wawi 8
Neu SQL-Fehler bei Volltextsuche und Sonderzeichen JTL-Shop - Fehler und Bugs 0
Neu einfache SQL Verknüfpung zweier Tabellen, z.B. Artikel mit ArtikelBeschreibung 1.6.46.1 Gelöste Themen in diesem Bereich 13
Neu SQL Ausgabe der Varko-Auswahl eines Artikels, mehrsprachig Tabelle zwei mal auf sich Joinen? User helfen Usern - Fragen zu JTL-Wawi 5
Neu SQL-Erfahrene vor - Nach Datenrettung - fehlende Aufträge lassen sich nicht einfügen - Ideen? User helfen Usern 4
Neu Nach Installation eines neuen SQL Servers klappt die Verbindung vom Benutzer-PC zum Server-PC nicht mehr. Installation von JTL-Wawi 5
Neu Fehler SQL-Schema importieren bei Neuinstallation Installation / Updates von JTL-Shop 7
Neu Update MS SQL 2014 auf MS SQL 2022 User helfen Usern - Fragen zu JTL-Wawi 0
Neu Datenbankebene per SQL löschen Eigene Übersichten in der JTL-Wawi 6
Neu MS SQL 14 Express wird langsam voll. Welche Lienzen benötigen wir? Bitte um Hilfe Eigene Übersichten in der JTL-Wawi 27
Upgrade von SQL Server 2014 auf höhere Version JTL-Wawi 1.8 4
1.8.11.0 - Worker SQL lässt System hängen JTL-Wawi 1.8 0
Neu List&Label Merkmale auf Etiketten (SQL) Gelöste Themen in diesem Bereich 3
Neu SQL Server Express 2017 auf 2022 Update Installation von JTL-Wawi 10
Neu Nach SQL Server neuinstallation Benutzer gelöscht? JTL-Wawi - Fehler und Bugs 3
Neu Versandart + Zahlungsart in Rechnungskorrektur (SQL) User helfen Usern - Fragen zu JTL-Wawi 10
Neu Abfrage des Lieferantenbestands Eigene Übersichten in der JTL-Wawi 4
Neu Abfrage von Änderungen am Lagerbestand zu einem bestimmten Zeitpunkt in der Vergangenheit JTL Ameise - Eigene Exporte 3
Neu Header Checkout, Topbar wird nicht ausgeblendet, Shop-Template 5.3, Neustes Child Theme GitLab Templates für JTL-Shop 2
Neu Passwort vergessen Mail wird nicht gesendet in 5.3.1 JTL-Shop - Fehler und Bugs 1
Neu JTL-WMS Mobile Artikelname wird nicht mehr vollständig angezeigt JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 1
Neu Seitennavigation wird doppelt angezeigt Allgemeine Fragen zu JTL-Shop 0
Eigenes Feld wird nicht angezeigt JTL-Wawi 1.8 2
Bestellvorschläge - Lagerbsestand in "Bestand gesamt" wird nicht angezeigt JTL-Wawi 1.8 0
Neu Auftragszahlung über Kasse, Auftrag wird nicht als "Verpackt und Versendet" markiert JTL-POS - Fehler und Bugs 1
Neu Artikel im Warenkorb wird von 1 auf null runtergesetzt. Anstatt es zu entfernen wird es automatisch wieder auf 1 gesetzt Allgemeine Fragen zu JTL-Shop 6
Selbstabholer wird zu DHL national geändert. JTL-Wawi 1.8 3
Neu JTL POS wird nicht an WaWi angebunden Einrichtung / Updates von JTL-POS 2
Globaler Mindestbestand bei neuen Artikeln wird trotz Nullbestand nicht in den Bestellvorschlägen berücksichtigt JTL-Wawi 1.6 1
Neu Neues 5.3 Feature Versandklassen-Assistent wird nicht angezeigt Gelöste Themen in diesem Bereich 5
Neu Bankverbindung wird nicht in Aufträgen/Rechnungen aus Abonnements aktualisiert User helfen Usern - Fragen zu JTL-Wawi 0
Wird jetzt das Widerrufsrecht aufgehoben? Gelöste Themen in diesem Bereich 3
Rechnungsentwurf wird nicht zur Rechnung bei Auslieferung JTL-Wawi 1.8 8
Bestand von Kinderartikeln wird im Vaterartikel zusammenaddiert JTL-Wawi 1.8 1
Neu Rechnungsdatum ist gleich Lieferdatum wird nicht erkannt User helfen Usern - Fragen zu JTL-Wawi 1
Neu PrestaShop Connector für Prestashop 8 mit PHP 8.2 wird nicht unterstützt PrestaShop-Connector 3

Ähnliche Themen