Autor Beitrag
av1983
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Mo 27.08.07 14:41 
Hallo,

ich stelle über eine .NET Applikation eine Verbindung zu einer Access Datenbank her.
Simpel formuliert werden DataAdapter mit den Daten einer in Access verfügbaren Abfrage gefüllt und auf einer Form über Bindings dargestellt. Das Abfrageergebnis an sich enthält ca. 50 Spalten und 10 Zeilen.

Das ganze funktioniert, allerdings benötigt es ca. 2-3 min bis sich überhaupt etwas tut. Vorher erscheint ein "Not Responding" im Titel des Programms, lässt man es weiterlaufen erhalt man trotzdem das Ergebnis.

Meine Fragen:
Woran kann es liegen, dass es um diese relativ geringe Datenmenge abzufragen und einzubinden so lange braucht?
Wie kann man das beschleunigen?
Liegt es evtl. daran, dass die Abfrage direkt in der Access-Datenbank liegt und nicht explizit von der Applikation übermittelt wird?

Bräuchte dringend eure Hilfe, denn je mehr Daten, desto länger dauert es, was nicht gerade zumutbar ist.

Vielen Dank
av1983
av1983 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Mo 03.09.07 12:29 
Braucht ihr noch weitere Informationen?
Wäre super, wenn jd darüber Bescheid wüsste.

Danke.
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Mo 03.09.07 12:43 
ganz einfach
access ist keine datenbank...
vesuchs mal mit mysql, sqlite, postgresql, oracle, ...
av1983 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Mo 03.09.07 13:01 
Access bietet für den Prototypen die billigste und einfachste Lösung. Das Ganze wird, wenn es sich bewährt hat auf SQL-Server umgestellt. Für die Entwicklung leider nun erstmal Access. Es klappt ja auch, nur dermaßen langsam. Und mir ist nicht ganz klar warum.

Es handelt sich nur um eine Abfrage (ca 50 Spalten) aus einer Tabelle, ohne Joins etc. daher verstehe ich nicht ganz warum das so lahmt.
Gibt es noch andere Möglichkeiten die Access Anbindung zu beschleunigen?
bzw. wer weiß warum das so langsam ist?

Danke.
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Mo 03.09.07 13:51 
user profile iconav1983 hat folgendes geschrieben:
Access bietet für den Prototypen die billigste und einfachste Lösung. Das Ganze wird, wenn es sich bewährt hat auf SQL-Server umgestellt. Für die Entwicklung leider nun erstmal Access. Es klappt ja auch, nur dermaßen langsam. Und mir ist nicht ganz klar warum.

Es handelt sich nur um eine Abfrage (ca 50 Spalten) aus einer Tabelle, ohne Joins etc. daher verstehe ich nicht ganz warum das so lahmt.
Gibt es noch andere Möglichkeiten die Access Anbindung zu beschleunigen?
bzw. wer weiß warum das so langsam ist?

Danke.

billigste?
mal nachdenken
fürs office benötigst du du eine lizenz und die kostet was.
und mysql,sqlite,postgresql sind open source datenbanken die u.a. auch um einiges performanter sind als access und auch den kompletten sql syntax implementiert haben im gegensatz zu access.
außerdem sind die open source varianten performanter als die access variante
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 03.09.07 14:02 
@Greenberet: Bitte beim Thema bleiben. av1983 hat klar gemacht, dass er keine alternative Datenbank sucht.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
av1983 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Mo 03.09.07 14:04 
Ok da stimme ich dir natürlich völlig zu.
Die Office Lizenz ist allerdings bereits vorhanden.
Billiger war eher im Vergleich zu einem SQL-Server gemeint.
Access kam auch zum Einsatz, da ich mich mit den anderen Produkten nicht auskenne,
aber das lässt sich ja ändern.

Dann habe ich mal ein paar Fragen:
Lässt sich mit .NET auch eine Verbindung so einfach wie mit OLE zu den genannten Datenbanken herstellen?
Welche Software benötige ich?
Muss ein Server-fähiges System vorhanden sein?
Ist es nämlich leider nicht, die Daten werden im Moment auf einem Netzlaufwerk in einem Access File abgelegt.

Denkst du, das lässt sich ohne große Umstände auf ein anderes System umstellen?

Danke für deine / eure Hilfe.
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Mo 03.09.07 15:11 
user profile iconChristian S. hat folgendes geschrieben:
@Greenberet: Bitte beim Thema bleiben. av1983 hat klar gemacht, dass er keine alternative Datenbank sucht.

er hat aber auch klar gemacht dass er eine performante Abfrage sucht und performance und Access sind 2 sachen die zusammen nicht existieren.


Um eine Verbindung zu MySQL o.ä. zu erstellen benötigst du falls du sie noch nicht hast passende Treiber ( sollte mit google leicht zu finden zu sein )
Die passende Datenbank musst du logischerweise auch irgendwo installieren, und portierung ist nicht schwer, du kannst ja die daten von access auslesen und in eine tabelle der neuen db über inserts einfügen.
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: Mi 05.09.07 21:46 
user profile iconGreenberet hat folgendes geschrieben:
er hat aber auch klar gemacht dass er eine performante Abfrage sucht und performance und Access sind 2 sachen die zusammen nicht existieren.
Er hat aber auch gesagt, dass er tatsächlich MSSQL als finales DBMS benutzen will und das sagt schon mehr als genug, so dass es wohl keinen Sinn machen würde vernünftige DBMS' aufzuzählen: "Steht kein MS drauf, hab' ich Angst."

Um nicht komplett offtopic zu sein:
Mit Access-DB meinst du bestimmt eine Jet-DB, richtig?
Wenn ja: Jet ist ein Datei-basierte "DBMS", das darauf basiert, dass du keinen Server hast.
Du musst also die GESAMTE DB laden, bevor du damit irgendwas anfangen kannst.
Das könnte durchaus bei der ersten Abfrage passieren.
Außerdem ist der OleDbProvider abartig schlecht, der kostet nochmal extra ein bissel Leistung. (wobei die in keinem Verhältnis zu einer Jet-DB steht, die im Netz liegt)

btw: Meine Empfehlung hier wäre Firebird + IBEXpert PE. In jeder Hinsicht einfacher, schneller und sicherer als Jet + Access.
av1983 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Do 06.09.07 18:53 
Danke für die Antworten. Ja, Jet-DB ist richtig und Verbindung über ole.

dann weiß ich nun, dass ich mit dieser Prototypvariante wohl nicht besser fahren kann.
Aus Kostengründen (Server) muss ich halt erstmal noch damit leben.