Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
[ADO] MS SQL Server, was passiert beim Öffnen einer Tabelle?
spacer
Autor Nachricht
ibh_compucat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 106
Dabei seit: 22.08.2002
Wohnort: Viersen

NT 4.0, Win 2000
D6, Ent.
BeitragVerfasst: Mi 03.03.10 17:21 
Betrifft: ADO
Antworten mit Zitat Beitrag melden
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!
Private Nachricht sendenPosting in privater Nachricht zitieren
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 111
Erhaltene Danke: 3
Dabei seit: 14.11.2008
Wohnort: Augsburg

XP - Server 2008R2
D2 - D2010
BeitragVerfasst: Mi 03.03.10 17:47  Antworten mit Zitat Beitrag melden
AdoConnection.Connected := true;

oder

Select * from tabelle where 1=0
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
ibh_compucat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 106
Dabei seit: 22.08.2002
Wohnort: Viersen

NT 4.0, Win 2000
D6, Ent.
BeitragVerfasst: Mi 03.03.10 18:25  Antworten mit Zitat Beitrag melden
Hallo Thomas,

Danke für den Hinweis, kann ich leider erst morgen testen.

Gruß ibh_compucat

_________________
Was du nicht begreifst, kannst du nicht verlernen!
Private Nachricht sendenPosting in privater Nachricht zitieren
ibh_compucat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 106
Dabei seit: 22.08.2002
Wohnort: Viersen

NT 4.0, Win 2000
D6, Ent.
BeitragVerfasst: Do 04.03.10 12:33  Antworten mit Zitat Beitrag melden
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!
Private Nachricht sendenPosting in privater Nachricht zitieren
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic starofftopic star

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
BeitragVerfasst: Do 04.03.10 14:52  Antworten mit Zitat Beitrag melden
user profile iconibh_compucat hat folgendes geschrieben Zum zitierten Posting springen:
[...] 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.
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
ibh_compucat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 106
Dabei seit: 22.08.2002
Wohnort: Viersen

NT 4.0, Win 2000
D6, Ent.
BeitragVerfasst: Do 04.03.10 15:21  Antworten mit Zitat Beitrag melden
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!
Private Nachricht sendenPosting in privater Nachricht zitieren
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 111
Erhaltene Danke: 3
Dabei seit: 14.11.2008
Wohnort: Augsburg

XP - Server 2008R2
D2 - D2010
BeitragVerfasst: Do 04.03.10 19:44  Antworten mit Zitat Beitrag melden
Nimm direkt die Adodatasets, hier sind die Möglichkeiten am unbeschränktesten
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
ibh_compucat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 106
Dabei seit: 22.08.2002
Wohnort: Viersen

NT 4.0, Win 2000
D6, Ent.
BeitragVerfasst: Fr 05.03.10 10:36  Antworten mit Zitat Beitrag melden
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!
Private Nachricht sendenPosting in privater Nachricht zitieren
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.
Beiträge vom vorherigen Thema anzeigen:   
home home