Forums Neueste Beiträge
 

ACC2002: Query- bzw. Command Timeout bei ADP für Formulare?

03/10/2008 - 16:28 von Franz Lang | Report spam
Hallo!

Ich entwickle ein ADP-Projekt mit Access 2002 und SQL Server
2005. Derzeit habe ich ein Problem mit einem nicht gebundenen
Hauptformular, welches ein gebundenes Unterformular enthàlt. Das
Hauptformular dient lediglich zur Auswahl von Filterkriterien,
die auf das Unterformular angewandt werden. Die Datenquelle des
Unterformulars ist eine Sicht.

Das Problem liegt nun darin, daß Access manchmal (eher selten)
beim Öffnen des (Haupt-) Formulars für die Abfrage 5-10 Minuten
(!) braucht -- d.h. wàhrend dieser Zeit kann keine andere
Anwendung einen exklusiven Zugriff auf eine der Sicht zugrunde
liegende Tabelle erhalten. Normalerweise (also ohne besonderen
Traffic auf dem SQL Server) dauert die Abfrage weniger als 1
Sekunde; die Sicht liefert 3000-5000 Datensàtze zurück.

Dieses Verhalten von Access konnte ich mittels SQL Server
Profiler mitprotokollieren. Ich dachte eigentlich, daß Access
Abfragen nach 30 Sekunden standardgemàß "abwürgt". Dies ist
anscheinend nicht der Fall.

Ich habe leider bei der bisherigen Recherche im Internet keine
befriedigenden Antworten auf folgende Fragen gefunden:

- Datei->Verbindung->Reiter "Alle": "General Timeout" -- worauf
hat diese Einstellung Einfluß? Wenn man hier einen Wert
einstellt, so kann man ihn spàter auch mittels
CurrentProject.Connection.Properties wieder abfragen ... aber
wird er auch von SQLOLEDB verwendet?

- Extras->Optionen->Reiter "Weitere": "OLE/DDE-Timeout (s)" --
hier kann man keinen Wert größer 300 eingeben. Diese Option kann
also wohl auch nicht für meinen fehlenden Timeout herangezogen
werden, da oben erwàhnte Abfrage lànger als 5 Minuten dauerte.


Als der Timeout über die andere Applikation gemeldet wurde, ist
mir bei der Durchsicht des Profiler-Protokolls folgendes
aufgefallen: laut Protokollaufzeichnung müßte der Anwender jenes
Formular geöffnet haben; Access làdt im Hintergrund die Daten
(über Verbindung A), die standardgemàß im Unterformular angezeigt
werden sollen; in der Zwischenzeit definiert der Anwender im
Hauptformular einige Filterkriterien; klickt auf den
"Requery"-Button, wodurch ich eine neue SQL-Abfrage dem
Unterformular zuweise (Unterformular.Form.RecordSource = strSQL),
woraufhin Access (über Verbindung B) die Abfrage ausführt und die
Daten wohl auch im Unterformular anzeigt ... erst 13 Sekunden
spàter ist laut Profiler die Abfrage über Verbindung A beendet
worden und hat insgesamt 35 Sekunden gedauert.

Danach wurde das Formular geschlossen; eine Minute spàter wieder
geöffnet ... und nun ließ sich Access 10 Minuten Zeit, die Daten
für das Unterformular zu holen.

Hat jemand eine Idee, wie man Access einen allgemeinen Timeout
von 30 Sekunden aufzwingen kann?

Vielen Dank im Voraus,
Franz.
 

Lesen sie die antworten

#1 Peter Doering
03/10/2008 - 17:25 | Warnen spam
Hallo,

Franz Lang wrote:

Ich entwickle ein ADP-Projekt mit Access 2002 und SQL Server
2005. Derzeit habe ich ein Problem mit einem nicht gebundenen
Hauptformular, welches ein gebundenes Unterformular enthàlt. Das
Hauptformular dient lediglich zur Auswahl von Filterkriterien,
die auf das Unterformular angewandt werden. Die Datenquelle des
Unterformulars ist eine Sicht.

Das Problem liegt nun darin, daß Access manchmal (eher selten)
beim Öffnen des (Haupt-) Formulars für die Abfrage 5-10 Minuten
(!) braucht -- d.h. wàhrend dieser Zeit kann keine andere
Anwendung einen exklusiven Zugriff auf eine der Sicht zugrunde
liegende Tabelle erhalten. Normalerweise (also ohne besonderen
Traffic auf dem SQL Server) dauert die Abfrage weniger als 1
Sekunde; die Sicht liefert 3000-5000 Datensàtze zurück.
[...]
Hat jemand eine Idee, wie man Access einen allgemeinen Timeout
von 30 Sekunden aufzwingen kann?



Probier mal, ob dir davon was hilft:

http://vyaskn.tripod.com/watch_your_timeouts.htm

Gruss - Peter

Anmeldung zur 11. AEK unter www.donkarl.com/?AEK
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen