A03: Anfügeabfrage (ODBC-Zugriff auf SQL 2005) extrem langsam

20/11/2008 - 12:07 von Gerald Aichholzer | Report spam
Hallo NG,

ich arbeite mit A03, wobei Front- und Backend im A00-Format
vorliegen. In der Anwendung habe ich SQL Server 2005 Sichten
per ODBC eingebungen (SQL Server Authentifizierung). Wenn ich
die eingebundenen Tabellen öffne und zum letzten Datensatz
(ca. 42000 Datensàtze) springe, dann dauert das maximal 1-2
Sekunden.

Erstelle ich jedoch eine Anfügeabfrage, die alle Felder in
eine (vom Backend eingebundene) Access-Tabelle einfügt, dann
warte ich ca. 5 Minuten, bis die Meldung "42xxx Datensàtze
werden eingefügt" erscheint. Dabei lastet der SQL Server
Prozess voll aus wàhrend Access vor sich hin idlet. Nach
Bestàtigen mit OK sind die Datensàtze sofort eingefügt.

Was kann das sein?

Ich habe schon mehrere ODBC-Treiber durchprobiert (SQL Server
2000.85.1132.00 und SQL Server Native Client) - immer mit dem
gleichen Ergebnis.

Ein SELECT * auf die Sicht am SQL Server wird im Management
Studion in 0 Sekunden ausgeführt.

Die Sicht hat drei Felder: nvarchar(10), nvarchar(40), int
Die Access-Tabelle: Text, Text, Ja/Nein

Kurz noch ein paar Worte zur Systemumgebung:

Server: Windows 2003 Server R2 (32-Bit)
SQL Server 2005 mit SP2 und CU6
3GB RAM

Client: VMware-VM mit 768MB RAM (làuft am Server)
Windows XP mit allen aktuellen Updates
Office 2003 mit allen aktuellen Updates
nicht in der Domàne des Server
(daher Zugriff über SQL Authentifizierung)

Vielen Dank für jede Hilfe und schöne Grüße aus Graz,
Gerald
 

Lesen sie die antworten

#1 Hannes Brunner
20/11/2008 - 12:43 | Warnen spam
Hallo Gerald,

Gerald Aichholzer schrieb:
Hallo NG,

ich arbeite mit A03, wobei Front- und Backend im A00-Format
vorliegen. In der Anwendung habe ich SQL Server 2005 Sichten
per ODBC eingebungen (SQL Server Authentifizierung). Wenn ich
die eingebundenen Tabellen öffne und zum letzten Datensatz
(ca. 42000 Datensàtze) springe, dann dauert das maximal 1-2
Sekunden.



das müssen aktualisierbare Sichten sein, sonst ginge das nicht so
schnell. Sprich Access ruft die Daten als Dynaset ab und nicht als Snapshot.

Erstelle ich jedoch eine Anfügeabfrage, die alle Felder in
eine (vom Backend eingebundene) Access-Tabelle einfügt, dann
warte ich ca. 5 Minuten, bis die Meldung "42xxx Datensàtze
werden eingefügt" erscheint. Dabei lastet der SQL Server
Prozess voll aus wàhrend Access vor sich hin idlet. Nach
Bestàtigen mit OK sind die Datensàtze sofort eingefügt.

Was kann das sein?



In dieser Konstellation ruft Access die Daten per 'prepared statement'
ab, und führt dieses dann 42xxx mal aus. Kein Wunder dass der Server da
ins Schwitzen kommt.

Abhilfe: Die Server-Sichten nicht aktualisierbar einbinden, also beim
Einbinden nicht die eindeutigen Felder angeben, oder per Pass-Through
einbinden. Dann muss Access die Server-Daten mangels Schlüsselinfo per
Snapshot laden und belàstigt den Server auch nur mit einem Select.

Gruß
Hannes

Ähnliche fragen