April 18, 2021, 02:47:57

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Access und MS-SQL: Abfragen dauern ewig

Begonnen von FrankiLi, Mai 18, 2017, 08:22:07

⏪ vorheriges - nächstes ⏩

FrankiLi

Hallo zusammen,

ich suche nach der richtigen Strategie, Abfragen auf per ODBC mit einem SQL-Server (Azure) verknüpfte Tabellen in einer vernünftigen Zeit durchführen zu können.

Beispiel:
Ein einfaches Update, das 7 Felder in einer Tabelle einfach nur auf NULL setzen soll (keine Kriterien, keine Joins, nichts) dauert 45 MINUTEN... lokal eine Sache von Sekunden.

Was ist generell die richtige Vorgehensweise, müssen es Updates auf dem Server direkt sein? Was deshalb schade wäre, weil ich gerne mit Makros in Access arbeite.

Gruss
Frank

PhilS

Zitat von: FrankiLi am Mai 18, 2017, 08:22:07Ein einfaches Update, das 7 Felder in einer Tabelle einfach nur auf NULL setzen soll (keine Kriterien, keine Joins, nichts) dauert 45 MINUTEN...

Poste doch mal den relevanten Code für dein Beispiel. Ohne diesen zu sehen kann man dazu wenig sagen, ausser dass es ziemlich abnormal ist, dass ein einfaches Update 45 Minuten dauert.

Zitat von: FrankiLi am Mai 18, 2017, 08:22:07Was ist generell die richtige Vorgehensweise, müssen es Updates auf dem Server direkt sein? Was deshalb schade wäre, weil ich gerne mit Makros in Access arbeite.

Ein wesentlicher Punkt für gute Performance mit einem SQL-Server-Backend, umso mehr wenn dieses auf Azure liegt, ist es, datenintensive Operationen möglichst komplett auf den Server zu verlagern.
Das heißt nicht unbedingt, dass du nicht mehr mit Makros (meinst du wirklich Makros, oder VBA?) arbeiten kannst/sollst, aber du solltest immer versuchen, den Datenverkehr zwischen Client und Server auf das Minimum zu reduzieren.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

datekk

Hallo FrankiLi,

Abfragen mit SQL Backend sind nicht ganz so einfach umzusetzen. Wenn die Abfrage lokal in Access ausgeführt wird (z.B. via ODBC verknüpften Tabellen), werden meist die Daten aller an der Abfrage beteiligten Tabellen vom Server geladen. Und das kann je nach Anzahl und Umfang ewig dauern.

Besser ist es, die Abfrage direkt via ADO auf dem Server ausführen zu lassen. Dazu kommst Du aber an VBA nicht vorbei. Auch eine programmierte Prozedur auf dem SQL Server arbeitet augenblicklich. Poste doch mal den Inhalt der SQL Ansicht Deiner Aktualisierungsabfrage.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps