none
Performance-Problem Access-Backend RRS feed

  • Frage

  • Hallo zusammen,

    nach einer Infrastrukturumstellung habe ein großes Problem mit einer Access-Anwendung.

    Die Anwendung besteht aus Access-Frontend und -Backend und einer C#-Anwendung, die Berechnungen auf dem Backend ausführt.

    In der alten Umgebung (Win7/Office2010) lief alles nicht schnell, aber ok. Nachdem das Unternehmen auf Win10 / Office2016 umgestellt hat, dauert das Öffnen und Schließen des Backends über C# anscheinend ca. 20 Sekunden.

    Habe das Backend dann testweise auf SQL-Server (2016) umgestellt. Jetzt ist der C#-Zugriff schnell, aber z.B. das Anzeigen einer Liste im Access-Frontend sehr langsam :-(.

    Also in der einen Variante ist Access langsam:

    Access-Frontend (ODBC-Verbindung mit Native Client) -  SQL-Server-Backend

    C#-Berechnung (SQL-Connection)

    und in der anderen C#:

    Access-Frontend (verknüpfte Tabellen) - Access-Backend

    C#-Berechnung (OleDB-Connection)

    Leider ist weder die eine, noch die andere Variante so akzeptabel.

    Ich weiß nicht, ob das die richtige Community ist. Aber vielleicht hat hier jemand dafür eine Erklärung/Idee?

    Bin dankbar für jeden Hinweis - und die Geduld, den ganzen Text zu lesen!

    Viele Grüße!

    Marion

    Donnerstag, 3. Oktober 2019 14:53

Antworten

  • Am 03.10.2019 schrieb Marion04:

    Die Anwendung besteht aus Access-Frontend und -Backend und einer C#-Anwendung, die Berechnungen auf dem Backend ausführt.

    In der alten Umgebung (Win7/Office2010) lief alles nicht schnell, aber ok. Nachdem das Unternehmen auf Win10 / Office2016 umgestellt hat, dauert das Öffnen und Schließen des Backends über C# anscheinend ca. 20 Sekunden.

    Wo liegt das Backend? Wie sind die Tabellen verknüpft? Per
    Laufwerksbuchstabe oder UNC-Pfad?

    Habe das Backend dann testweise auf SQL-Server (2016) umgestellt. Jetzt ist der C#-Zugriff schnell, aber z.B. das Anzeigen einer Liste im Access-Frontend sehr langsam :-(.

    Wie lange dauert die Abfrage auf dem SQL Server? Oder öffnest Du eine
    komplette Tabelle in dem Formular?

    Wenn man ein Access-Backend auf den SQL Server auslagert, muss man
    sich mit dem SQL Server und seinen Techniken auseinandersetzen. Eins
    zu eins übernehmen geht IMO gar nicht.

    Wenn Access-Frontend und SQL Backend empfehle ich auf
    Tabellenverknüpfungen zu verzichten und nur mit Views oder Stored
    Procedures zu arbeiten.

    Bernd Jungbluth hat das auf der AEK17 gezeigt. Hier ein paar Beispiele
    in einem ZIPFile:
    http://www.donkarl.com/Downloads/AEK/AEK17_LogikSQLServer.zip

    Servus
    Winfried


    WSUS Package Publisher:
    https://github.com/DCourtel/Wsus_Package_Publisher
    HowTos zum WSUS Package Publisher
    https://www.wsus.de/wsus-package-publisher/
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren:
    https://github.com/JochenKalmbach/communitybridge
    GP-PACK - PRIVACY AND TELEMETRIE: http://www.gp-pack.com/

    • Als Antwort markiert Marion04 Mittwoch, 9. Oktober 2019 16:47
    Donnerstag, 3. Oktober 2019 18:19

Alle Antworten

  • Am 03.10.2019 schrieb Marion04:

    Die Anwendung besteht aus Access-Frontend und -Backend und einer C#-Anwendung, die Berechnungen auf dem Backend ausführt.

    In der alten Umgebung (Win7/Office2010) lief alles nicht schnell, aber ok. Nachdem das Unternehmen auf Win10 / Office2016 umgestellt hat, dauert das Öffnen und Schließen des Backends über C# anscheinend ca. 20 Sekunden.

    Wo liegt das Backend? Wie sind die Tabellen verknüpft? Per
    Laufwerksbuchstabe oder UNC-Pfad?

    Habe das Backend dann testweise auf SQL-Server (2016) umgestellt. Jetzt ist der C#-Zugriff schnell, aber z.B. das Anzeigen einer Liste im Access-Frontend sehr langsam :-(.

    Wie lange dauert die Abfrage auf dem SQL Server? Oder öffnest Du eine
    komplette Tabelle in dem Formular?

    Wenn man ein Access-Backend auf den SQL Server auslagert, muss man
    sich mit dem SQL Server und seinen Techniken auseinandersetzen. Eins
    zu eins übernehmen geht IMO gar nicht.

    Wenn Access-Frontend und SQL Backend empfehle ich auf
    Tabellenverknüpfungen zu verzichten und nur mit Views oder Stored
    Procedures zu arbeiten.

    Bernd Jungbluth hat das auf der AEK17 gezeigt. Hier ein paar Beispiele
    in einem ZIPFile:
    http://www.donkarl.com/Downloads/AEK/AEK17_LogikSQLServer.zip

    Servus
    Winfried


    WSUS Package Publisher:
    https://github.com/DCourtel/Wsus_Package_Publisher
    HowTos zum WSUS Package Publisher
    https://www.wsus.de/wsus-package-publisher/
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren:
    https://github.com/JochenKalmbach/communitybridge
    GP-PACK - PRIVACY AND TELEMETRIE: http://www.gp-pack.com/

    • Als Antwort markiert Marion04 Mittwoch, 9. Oktober 2019 16:47
    Donnerstag, 3. Oktober 2019 18:19
  • Hallo Winfried,

    erst Mal vielen Dank für die Erläuterungen und den Link. Natürlich hast Du recht. Eine "richtige" Migration auf SQL-Server Prozeduren, etc. wäre besser. Leider ist das mit zu viel Aufwand verbunden und daher nicht genehmigt.

    Ist zwar eine SQL-Server-View, aus der aber eine Abfrage (mit einer Access-Funktion) erstellt wird. Und die wird dann als Liste im Formular angezeigt.  Access/Access ist da anscheinend viel schneller.

    Werde es einmal mit einem anderen ODBC-Treiber versuchen.

    Viele Grüße

    Marion

    Freitag, 4. Oktober 2019 11:43
  • Am 04.10.2019 schrieb Marion04:

    Ist zwar eine SQL-Server-View, aus der aber eine Abfrage (mit einer Access-Funktion) erstellt wird. Und die wird dann als Liste im Formular angezeigt.  Access/Access ist da anscheinend viel schneller.

    Du hast im SQL Server eine View erstellt, die bindest Du im FE ein und
    erstellst dir daraus wieder eine neue Abfrage? Die Abfrage in Access
    kannst Du nicht gleich im SQL Server richtigerweise anlegen?

    Die View im SQL Server ist schnell?

    Servus
    Winfried


    WSUS Package Publisher:
    https://github.com/DCourtel/Wsus_Package_Publisher
    HowTos zum WSUS Package Publisher
    https://www.wsus.de/wsus-package-publisher/
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren:
    https://github.com/JochenKalmbach/communitybridge
    GP-PACK - PRIVACY AND TELEMETRIE: http://www.gp-pack.com/

    Freitag, 4. Oktober 2019 13:31
  • Hallo,

    Ist zwar eine SQL-Server-View, aus der aber eine Abfrage (mit einer Access-Funktion) erstellt wird.

    Zeig mal die Access-Abfrage mit der Funktion.

    Werde es einmal mit einem anderen ODBC-Treiber versuchen. 

    Zur Info, der aktuellste Treiber, der auch weiterentwickelt wird, ist: "ODBC Driver 13 for SQL Server"

    Gruss - Peter

    Montag, 7. Oktober 2019 13:20
    Moderator
  • >> der aktuellste Treiber, der auch weiterentwickelt wird, ist: "ODBC Driver 13 for SQL Server"

    Hallo Peter, der neueste ODBC Treiber ist meine Wissens Version 17, Download  siehe https://www.microsoft.com/de-DE/download/details.aspx?id=56567

    und Dokumentation https://docs.microsoft.com/en-us/sql/connect/odbc/windows/microsoft-odbc-driver-for-sql-server-on-windows?view=sql-server-2017

    Matthias Kläy, Kläy Computing AG

    Montag, 7. Oktober 2019 14:02
  • >> der aktuellste Treiber, der auch weiterentwickelt wird, ist: "ODBC Driver 13 for SQL Server"

    Hallo Peter, der neueste ODBC Treiber ist meine Wissens Version 17

    In der Tat, danke für den Hinweis.

    Gruss - Peter

    -- 
    FAQ: Link
    Docs: Link

    Dienstag, 8. Oktober 2019 10:00
    Moderator
  • Hallo zusammen,

    Vielen Dank für die Antworten. Ich habe schließlich doch alle Abfragen in Views migriert. Aus der Funktion eine Procedure zu machen, wäre ziemlich aufwändig gewesen. Aber auch mit der Access-Funktion läuft die Abfrage jetzt immer noch schnell :-).

    Den neuen Treiber kann ich auch nicht verwenden, da auf den Clients nur der alte SQL-Server-Treiber installiert ist.

    Leider handelt es sich um eine Übergangslösung, d.h. es ist  minimaler Aufwand gefragt.

    Vielen Dank euch allen und viele Grüße

    Marion

    Mittwoch, 9. Oktober 2019 16:47
  • Am 09.10.2019 schrieb Marion04:

    Vielen Dank für die Antworten. Ich habe schließlich doch alle Abfragen in Views migriert. Aus der Funktion eine Procedure zu machen, wäre ziemlich aufwändig gewesen. Aber auch mit der Access-Funktion läuft die Abfrage jetzt immer noch schnell :-).

    OK. ;)

    Den neuen Treiber kann ich auch nicht verwenden, da auf den Clients nur der alte SQL-Server-Treiber installiert ist.

    Kann man auf den Clients nicht den neuen Treiber installieren? Falls
    nein, gibt es einen 'echten' Grund?

    Leider handelt es sich um eine Übergangslösung, d.h. es ist  minimaler Aufwand gefragt.

    Übergangslösungen haben meistens die Übergangszeit recht schnell
    überschritten und fristen dann sehr, sehr lange ihr Dasein. :)

    Servus
    Winfried


    WSUS Package Publisher:
    https://github.com/DCourtel/Wsus_Package_Publisher
    HowTos zum WSUS Package Publisher
    https://www.wsus.de/wsus-package-publisher/
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren:
    https://github.com/JochenKalmbach/communitybridge
    GP-PACK - PRIVACY AND TELEMETRIE: http://www.gp-pack.com/

    Mittwoch, 9. Oktober 2019 21:30
  • Ja und nein. Der Verwaltungsaufwand, den neuen Treiber installieren zu lassen, wäre viel höher gewesen, als die Anwendung auf den alten Treiber anzupassen. Und hätte wahrscheinlich Wochen gedauert ;-) 

    Und richtig: Nichts ist so langlebig, wie Übergangslösungen :-)

    Viele Grüße!

    Marion

    Donnerstag, 10. Oktober 2019 09:21
  • Am 10.10.2019 schrieb Marion04:

    Ja und nein. Der Verwaltungsaufwand, den neuen Treiber installieren zu lassen, wäre viel höher gewesen, als die Anwendung auf den alten Treiber anzupassen. Und hätte wahrscheinlich Wochen gedauert ;-) 

    Hust, da ich ja auch Systemadministrator bin, weiß ich wie schnell man
    den neuen Treiber (*.MSI) auf die Rechner bringen kann. Wenn ein WSUS
    zur Verfügung steht, geht das in 5 Minuten, hat man nur eine Domain
    ohne WSUS zur Verfügung, dann dauert es 5 Minuten. Wie lange hat es
    gedauert bis die Anwendung angepasst wurde? 1, 2 oder 3 Stunden? :)

    Servus
    Winfried


    WSUS Package Publisher:
    https://github.com/DCourtel/Wsus_Package_Publisher
    HowTos zum WSUS Package Publisher
    https://www.wsus.de/wsus-package-publisher/
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren:
    https://github.com/JochenKalmbach/communitybridge
    GP-PACK - PRIVACY AND TELEMETRIE: http://www.gp-pack.com/

    Donnerstag, 10. Oktober 2019 11:30
  • ...Mehr als 3 Stunden, mußte noch das Datumsformat von datetime2 auf datetime zurückstellen und danach alle Tabellen neu füllen.

    Den Treiber zu installieren geht bestimmt schnell, das Problem (in großen Firmen)  ist der Workflow - Paketbeschreibung, -beauftragung, -erstellung und Installation durch den Dienstleister, Dokumentation, etc. ....Und ohne das Alles darf der Systemadministrator garnichts ;-)

    Viele Grüße!

    Marion


    Donnerstag, 10. Oktober 2019 13:48