| Autor |
Nachricht |
ibh_compucat
       
Beiträge: 106 Dabei seit: 22.08.2002 Wohnort: Viersen
NT 4.0, Win 2000 D6, Ent.
|
Hallo,
ich greife aus meinem Programm auf Tabellen eines MS SQL-Servers zu. Dazu öffne ich im Form1.create die entsprechenden Tabellen (z.B. Form1.Tabelle1.open), so daß ich später an den Stellen, an denen ich sie brauche z.B. unmittelbar lesen kann.
Nach nunmehr einigen Jahren sind die Tabellen teilweise auf ca. 100 MB angewachsen (das ist ja eigentlich nicht viel) und der Öffnungsprozess (Zeitraum vom Starten des Icons bis zum Erscheinen der Form) dauert inzwischen bis zu 50 Sekunden in einem schnellen Gigabyte LAN.
Das Ganze soll nun auch noch über DSL passieren, dabei entstehen für die Anmeldung bei der Datenbank Zeiten von ca. 40 Minuten, das ist nicht akzeptabel.
Offensichtlich hängt die Öffnungsdauer von der Größe der Tabelle einer Datenbank ab, dabei möchte ich an dieser Stelle überhaupt keine Inhalte wissen, sondern nur die Verbindung mit der Datenbank herstellen und "als Freund behandelt werden".
Wenn ich statt Tabelle.open sage Tabelle.Active ist das kein sichtlicher (zeitlicher) Unterschied.
Steht die Verbindung, dann ist der weitere Zugriff akzeptabel.
Kann mir jemand einen Hinweis geben, wie man einen zügigen Zugriff auf einen SQL-Server (über DSL, ca. 4000) herstellen kann?
freundliche Grüsse
ibh_compucat
_________________ Was du nicht begreifst, kannst du nicht verlernen!
|

|
|
bummi
       
Beiträge: 111 Erhaltene Danke: 3 Dabei seit: 14.11.2008 Wohnort: Augsburg
XP - Server 2008R2 D2 - D2010
|
AdoConnection.Connected := true;
oder
Select * from tabelle where 1=0
|

|
|
ibh_compucat
       
(Threadstarter)
Beiträge: 106 Dabei seit: 22.08.2002 Wohnort: Viersen
NT 4.0, Win 2000 D6, Ent.
|
Hallo Thomas,
Danke für den Hinweis, kann ich leider erst morgen testen.
Gruß ibh_compucat
_________________ Was du nicht begreifst, kannst du nicht verlernen!
|

|
|
ibh_compucat
       
(Threadstarter)
Beiträge: 106 Dabei seit: 22.08.2002 Wohnort: Viersen
NT 4.0, Win 2000 D6, Ent.
|
klappt leider noch nicht. Wenn ich mit Form1.ADOConnection1.connected die Verbindung herstelle kommt zwar keine Fehlermeldung, aber die Tabellen sind noch nicht für Zugriffe geöffnet, d.h. ich muß die Tabelle vor einem Zugriff mit ADOTable1.open oder mit ADOTable1.Active = True öffnen und habe dann das Zeitproblem, daß offensichtlich alle Daten der Tabelle vom SQL-Server an den Client übertragen werden, obwohl ich vielleicht nur einen Datensatz anhängen will.
Aufgrund des Schnittstellenmonitors und der angegebenen Transferrate habe ich die ausgetauschte Datenmenge beim Öffnen der Tabelle überschlagen und das stimmt in etwa mit der Datenmenge der gesamten Tabelle überein.
Bei der ADOQuery kann ich mit einer WHERE Klausel, die nicht erfüllt werden kann, den Datentransfer minimieren, aber wie mache ich das bei einer ADOTable?
Hat jemand eine Idee?
freundliche Grüße ibh_compucat
_________________ Was du nicht begreifst, kannst du nicht verlernen!
|

|
|
Robert.Wachtel
        
Beiträge: 881 Erhaltene Danke: 1 Dabei seit: 07.12.2004 Wohnort: Köln
Windows 7 Ultimate x64 D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
ibh_compucat hat folgendes geschrieben : | | [...] wie mache ich das bei einer ADOTable? [...] |
Gar nicht.
Man benutzt die ADOTable-Komponenten nicht. Diese sind eigentlich nur für die vereinfachte Migration von BDE-basierten Applikationen eingeführt worden und haben genau den von Dir beobachteten Nachteil.
|

|
|
ibh_compucat
       
(Threadstarter)
Beiträge: 106 Dabei seit: 22.08.2002 Wohnort: Viersen
NT 4.0, Win 2000 D6, Ent.
|
Danke Robert,
das ist ein klares Wort, ich werden die Tabellen durch Querys ersetzen ('ne Menge Arbeit).
Nochmals herzlichen Dank
ibh_compucat
_________________ Was du nicht begreifst, kannst du nicht verlernen!
|

|
|
bummi
       
Beiträge: 111 Erhaltene Danke: 3 Dabei seit: 14.11.2008 Wohnort: Augsburg
XP - Server 2008R2 D2 - D2010
|
Nimm direkt die Adodatasets, hier sind die Möglichkeiten am unbeschränktesten
|

|
|
ibh_compucat
       
(Threadstarter)
Beiträge: 106 Dabei seit: 22.08.2002 Wohnort: Viersen
NT 4.0, Win 2000 D6, Ent.
|
Ich habe inzwischen die Tables durch Querys ersetzt, da mir beide vertraut waren und es war weniger Arbeit als ich befürchtet hatte.
Die ADODatasets hatte ich bis heute noch gar nicht wahrgenommen bzw. wusste nichts damit anzufangen. Aber ich habe sie natürlich jetzt gefunden und ich werde mich damit vertraut machen.
Danke an Dich, Thomas.
Gruss ibh_compucat
_________________ Was du nicht begreifst, kannst du nicht verlernen!
|

|
|
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
|
|
|
|