SQL Abfrage ind access verursacht ODBC Aufruf fehlgeschlagen
Hallo.
mittlerweile schleicht sich ein kleines Problem an. Wir füttern eine SQL Datenbank jeden Tag mit Daten über Access als Frontend. In der Datenbank sind zurzeit 218659 Datensätze. Diese werden regelmäßig nach Doppler überprüft. Leider kommt nun sehr oft die Fehlermeldung ODBC Aufruf fehlgeschlagen. Die Timeouts habe ich schon soweit hochgesetzt aber daran lag es nicht. Hat jemand eine Idee woran es liegen könnte? - alles andere Funktioniert.
mittlerweile schleicht sich ein kleines Problem an. Wir füttern eine SQL Datenbank jeden Tag mit Daten über Access als Frontend. In der Datenbank sind zurzeit 218659 Datensätze. Diese werden regelmäßig nach Doppler überprüft. Leider kommt nun sehr oft die Fehlermeldung ODBC Aufruf fehlgeschlagen. Die Timeouts habe ich schon soweit hochgesetzt aber daran lag es nicht. Hat jemand eine Idee woran es liegen könnte? - alles andere Funktioniert.
SELECT [GW-Karten].Name, [GW-Karten].Vorname, [GW-Karten].Strasse, [GW-Karten].PLZ, [GW-Karten].Ort, [GW-Karten].ID, [GW-Karten].[PVA-NR], [GW-Karten].Firmen_KZ, [GW-Karten].Erfassungsdat, [GW-Karten].Doppler, [GW-Karten].[Tel falsch], [GW-Karten].[Karte nicht leserlich], [GW-Karten].[Unterschrift fehlt], [GW-Karten].[Karte ungülltig], [GW-Karten].MJ, [GW-Karten].Ausländer
FROM [GW-Karten]
WHERE ((([GW-Karten].Name) In (SELECT [Name] FROM [GW-Karten] As Tmp GROUP BY [Name],[Vorname],[Strasse],[PLZ],[Ort] HAVING Count(*)>1 And [Vorname] = [GW-Karten].[Vorname] And [Strasse] = [GW-Karten].[Strasse] And [PLZ] = [GW-Karten].[PLZ] And [Ort] = [GW-Karten].[Ort])) AND (([GW-Karten].Firmen_KZ)=[Welche Orga?]) AND (([GW-Karten].Erfassungsdat) Between [von Erfassungsdatum?] And [bis Erfassungsdatum?]))
ORDER BY [GW-Karten].Name, [GW-Karten].Vorname, [GW-Karten].Strasse, [GW-Karten].PLZ, [GW-Karten].Ort;
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 203140
Url: https://administrator.de/contentid/203140
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
2 Kommentare
Neuester Kommentar
Moin chrisIm,
Vielleicht könntet ihr einfach diess Klicki-Bunti-generierte Gestrunkele mal von Hand anfassen und einfach etwas Performantes draus machen.
Oder bzw. und ein paar unterstützende Indizes auf diese 10 Felder lange GROUP BY/Alternate key-Unappetitlichkeit legen.
Ist dir folgender kleiner Gag in der Abfrage aufgefallen?
???
Bedeutet: Wenn die Group-by-Abfrage einen vermeintlich doppelten "Müller", "Thomas" in "12345" "Schwartenkrachdorf" findet...
-> dann werden ALLE Datensätze mit Name="Müller" zurückgeschickt????
Warum dauert die Query wohl so lange?
Dennoch : mit den paar Datensätzen einen SQL-Server/eine Datenbankengine zum Abblocken zu bewegen... das schafft nicht jeder.
--> optimier den Krams.
Aus Interesse: Wie lange braucht denn heute so eine Query, falls sie durchgeht?
Grüße
Biber
Die Timeouts habe ich schon soweit hochgesetzt aber daran lag es nicht
Kennst du den Ausdruck "Toller Plan" und hast du ihn in letzter Zeit mal von eurem DBA gehört?Vielleicht könntet ihr einfach diess Klicki-Bunti-generierte Gestrunkele mal von Hand anfassen und einfach etwas Performantes draus machen.
Oder bzw. und ein paar unterstützende Indizes auf diese 10 Felder lange GROUP BY/Alternate key-Unappetitlichkeit legen.
Ist dir folgender kleiner Gag in der Abfrage aufgefallen?
.... WHERE ((([GW-Karten].Name) In (SELECT [Name] FROM [GW-Karten] As Tmp GROUP BY [Name....(+x Felder)..
Bedeutet: Wenn die Group-by-Abfrage einen vermeintlich doppelten "Müller", "Thomas" in "12345" "Schwartenkrachdorf" findet...
-> dann werden ALLE Datensätze mit Name="Müller" zurückgeschickt????
Warum dauert die Query wohl so lange?
Dennoch : mit den paar Datensätzen einen SQL-Server/eine Datenbankengine zum Abblocken zu bewegen... das schafft nicht jeder.
--> optimier den Krams.
Aus Interesse: Wie lange braucht denn heute so eine Query, falls sie durchgeht?
Grüße
Biber