PeterAusBayern: ACCESS Benutzeroberfläche und SQL implementierung

Guten Tag! Ich habe eine Frage. Und zwar habe ich eine ACCESS Datenbank. Dadurch das aber schon so viele Daten in der DB vorhanden sind, wird die Benutzeroberfläche immer und immer langsamer. Nun meine Frage: Ist es möglich, von der ACCESS Datenbank einen SQL-Dump zu machen, diesen dann in einen SQL-Server zu importieren, und dann weiterhin die ACCESS Benutzeroberfläche zu verwenden, aber auf einem SQL Server?

Freue mich auf eure Antworten!

Glg!

  1. Hallo

    Und zwar habe ich eine ACCESS Datenbank. Dadurch das aber schon so viele Daten in der DB vorhanden sind, wird die Benutzeroberfläche immer und immer langsamer. Nun meine Frage: Ist es möglich, von der ACCESS Datenbank einen SQL-Dump zu machen, diesen dann in einen SQL-Server zu importieren, und dann weiterhin die ACCESS Benutzeroberfläche zu verwenden, aber auf einem SQL Server?

    Ja.

    Freue mich auf eure Antworten!

    Bitte.

    Tschö, Auge

    --
    Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
    Wolfgang Schneidewind *prust*
    1. Ja.

      Ok ich redefiniere die Frage: Ist es möglich, wenn ja, wie?

      ^^

      LG

      1. Hallo

        Ja.

        Ok ich redefiniere die Frage: Ist es möglich, wenn ja, wie?

        Hehe, kommt binnen ca. einer Stunde (bin gerade im Stress).

        Tschö, Auge

        --
        Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
        Wolfgang Schneidewind *prust*
  2. Hallo

    Und zwar habe ich eine ACCESS Datenbank. Dadurch das aber schon so viele Daten in der DB vorhanden sind, wird die Benutzeroberfläche immer und immer langsamer.

    Du hast an dieser Stelle möglicherweise mehrere Aspekte.

    1. Die Menge der in der Datenbank gespeicherten Daten wird größer und größer.
    2. Der Aufbau der Formulare ist über Jahre oder gar Jahrzehnte gewachsen und (dann typischerweise) für größere Datenmengen ungünstig.

    beides kann zu mangelnder Performance führen. Das auch gerne in Kombination und unter Hinzuziehung weiterer Störquellen, wie z.B. der Lagerung der Daten im Netzwerk bei schlechter Anbindung oder bei zu vielen™ Clients, die auf die Daten zugreifen.

    Ist es möglich, von der ACCESS Datenbank einen SQL-Dump zu machen, diesen dann in einen SQL-Server zu importieren, und dann weiterhin die ACCESS Benutzeroberfläche zu verwenden, aber auf einem SQL Server?

    Du kannst die Tabellen analog zu den lokalen Tabellen auf dem Server anlegen, in Access (z.B. über ODBC) verknüpfen und die Daten dann mittels SQL-Queries von den lokalen Tabellen auf die Servertabellen übertragen. Einen SQL-Dump brauchst du dazu normalerweise nicht. Damit bist du diese Beschränkung los. Davon wird die Datenbankoberfläche aber nicht einfach so schneller.

    Das Frontend (Formulare, Abfragen, VB-Code) solltest du von vorne bis hinten prüfen.

    Erfrage beim SQL-Server nur die gerade benötigten Daten.

    Oft wird in Access-Projekten eine ganze Tabelle in ein Formular geladen und jeweils ein Datensatz dargestellt. Mit den Access-eigenen Schaltflächen wird zwischen den Datensätzen navigiert. Großes Kino sind dann auch Unterformulare für vom Hauptdatensatz abhängige weitere Datensätze in 1-n-Beziehungen. Dort wird dann auch gern die ganze Tabelle der abhängigen Datensätze geladen, obwohl zum Hauptdatensatz nur ein paar abhängige Datensätze existieren.

    Frage explizit nur die benötigten Datensätze ab. Tue dies auch bei Unterformularen. Zudem meiner Erfahrung nach günstig: Setze die Datenquellen für Formulare und Unterformulare über den VB-Code des Moduls des Hauptformulars beim öffnen des Formulars und bei Bedarf bei weiteren Events.

    Lagere Datenbankoperationen so weit wie möglich auf den Server aus.

    Der SQL-Server ist dafür da und darauf optimiert, die dort gespeicherten Daten zu prozessieren. Server bieten neb en der reinen Datenhaltung in Tabellen z.B. Views, Prozeduren, Trigger.

    • Mit Views sind die Ergebnisse von Abfragen, gern auch mit Joins, in tabellenähnlicher Form ständig verfügbar. Du kannst sie in Access wie Tabellen einbinden.
    • Mit Prozeduren, die du auch aus Access heraus aufrufen kannst, kannst du Daten vom Server abfragen (statt die SQL-Abfrage z.B. im VB-Code zusammenzustückeln), Daten schreiben und verändern.
    • Mit Triggern kannst du auf Serverseite augenblicklich auf Änderungen an Tabellen reagieren. Wenn z.B. ein Datensatz verändert wurde (per UPDATE), kannst du im Trigger veranlassen, dass dem Datensatz einem Datensatz in einer anderen Tabelle eine weitere Info hinzugefügt wird.

    Du bekommst also die Möglichkeit, den Server mit Aufgaben zu betrauen, die du bisher im Access-Client erledigen musstest. Alles, was der nun nicht mehr selbst machen muss, sondern eventuell nur noch anzustoßen braucht, macht ihn tatsächlich schneller.

    Du wirst dazu eventuell Bedienkonzepte deiner Programmoberfläche und den enthaltenen Code infrage stellen müssen. Sei darauf gefasst, dass die Umstellung der reinen Datenhaltung auf einen SQL-Server zwar fix erledigt ist, die Bearbeitung des Frontends aber eine langwierige Aufgabe ist.

    Tschö, Auge

    --
    Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
    Wolfgang Schneidewind *prust*
  3. Tach!

    Ist es möglich, von der ACCESS Datenbank einen SQL-Dump zu machen, diesen dann in einen SQL-Server zu importieren, und dann weiterhin die ACCESS Benutzeroberfläche zu verwenden, aber auf einem SQL Server?

    Mit Copy und Paste kann man auch ganze Tabellen von und zum SQL Management Studio bewegen. Aber wie Auge schon sagte, allein das hilft noch nicht. Es kann sogar noch langsamer werden, weil die Daten erst noch zwischen zwei Prozessen und/oder Netzwerk transportiert werden müssen. Die Arbeitsweise des Programms ist entscheidend. Erstmal alles laden und dann filtern ist der langsamste Ansatz, egal wie das Backend aussieht. Serverseitiges Filtern und Paging ist die bessere Lösung. Aber auch die hat eine Ladezeit, wenn der Filter geändert oder die Seite gewechselt wird.

    dedlfix.

  4. Hallo und guten Tag,

    Und zwar habe ich eine ACCESS Datenbank. Dadurch das aber schon so viele Daten in der DB vorhanden sind, wird die Benutzeroberfläche immer und immer langsamer. Nun meine Frage: Ist es möglich, von der ACCESS Datenbank einen SQL-Dump zu machen, diesen dann in einen SQL-Server zu importieren, und dann weiterhin die ACCESS Benutzeroberfläche zu verwenden, aber auf einem SQL Server?

    Wenn es sich um reine SQL-Formulare handelt, sollte es da keine Schwierigkeiten geben. Da müssten die Datenmengen schon enorm groß sein.

    Die JET-Engine ist enorm schnell.

    Wir haben mit Access2000 (also schon etwas älter) über eine VPN-Strecke per Fritz-ACCESS (ISDN 4 Kanäle über B4-Board) und auf der anderen Seite normler ISDN-Anschluss (also 128kBit) mit einer Access-Datenbank gearbeitet. Die war erstaunlich schnell, obwohl reichlich mit Formular/Unterformular und referenzieller Integrität gearbeitet wurde. Allerdings waren die Tabellen auch alle passend indiziert!

    Ich denke, daß das der Knackepunkt ist.

    Grüße
    TS

    --
    es wachse der Freifunk
    http://freifunk-oberharz.de