Warum filtert mein Access 2010 ADP seine SQL-Anweisungen nicht, wenn er mit MSSQL 2008 R2 verbunden ist?

736
richardtallent

Ich verwende MSSQL MS für die meisten Verwaltungsaufgaben in SQL Server 2008 R2-Datenbanken. Die Verwendung von Access (über einen ADP und keine verknüpften Tabellen) zum Anzeigen und Bearbeiten von Rohtabellendaten ist jedoch wesentlich effizienter. (Dies ist nur für den sysadmin-Gebrauch gedacht, der Benutzerzugriff erfolgt natürlich über eine Web-App, und die betreffenden Tabellen sind relativ klein, möglicherweise einige tausend Zeilen.)

Da jedoch die Umstellung auf Access 2010, Leistung getankt beim Filtern und Sortieren von Tabellen in einem ADP, und es über Profiler beobachten, ich weiß, warum - Der Zugang ist nicht nur nicht eine Vorbereitung WHEREKlausel für MSSQL der Filter zu implementieren, sie bittet um die rohe Tabelle mehrmals, unabhängig davon, welche Filter vorhanden sind. Mit anderen Worten, es tut so etwas:

SET ROWCOUNT 10000  SELECT "dbo"."MYTABLE".* FROM "dbo"."MYTABLE" SET ROWCOUNT 0  SELECT "dbo"."MYTABLE".* FROM "dbo"."MYTABLE" SET ROWCOUNT 10000  SELECT "dbo"."MYTABLE".* FROM "dbo"."MYTABLE" SET ROWCOUNT 0  SELECT "dbo"."MYTABLE".* FROM "dbo"."MYTABLE" 

(Ich habe ein paar zusätzliche Anweisungen ausgelassen, in denen erweiterte Spalteneigenschaften gelesen werden.)

Was macht Access hier, und wie kann ich ihn dazu bringen, SQL Server zu verwenden, um die Filterung und Sortierung durchzuführen und nicht bei jeder Änderung der Tabellenfilter mehrere Auslösungen durchzuführen ?

2
Dies ist eine gute Frage, und ich weiß nicht, welche Antwort es hat, aber meine Intuition sagt mir, dass es clientseitige Recordset-Objekte verwendet und / oder die Serverdaten als Kopie (im RAM) in eine JET / OLEDB-Datenbank und bringt dann verwenden Sie OLEDB zum Filtern. Warum in aller Welt das tun würde, wenn er von einem SQL-Server unterstützt wird, habe ich keine Ahnung. Vielleicht ist es eine Einstellung im ADP? Vielleicht ist es der Treiber, mit dem Sie vom ADP aus eine Verbindung zu SQL hergestellt haben? Bestimmte Treiber unterstützen nur clientseitige Recordsets, während andere eher serverseitig sind. Horn OK Please vor 11 Jahren 0
Eine Totale: [versuchen Sie dies] (http://accessexperts.net/blog/2011/11/02/windows-7-64bit-slow-with-access-2007-solved/). harrymc vor 11 Jahren 0
Anscheinend habe ich hier keinen guten Ruf, um meine eigene Frage zu beantworten, aber ich habe eine praktikable Lösung gefunden. Ich habe in MSSQLSM eine VIEW erstellt, die Zeilen aus meiner Tabelle anhand von Filtern auswählt, die ich in einer eigens dafür entworfenen Scratch-Tabelle in einer Reihe habe. Ich kann dann die Zeilen in Access bearbeiten, indem ich sie in der Ansicht bearbeite. Dadurch wird die Reihenfolge der MAGNITUDE schneller. Sie müssen nur meine Filterzeile bearbeiten (die ich in einem anderen Fenster geöffnet halte) und die Ansicht bei Bedarf aktualisieren. richardtallent vor 11 Jahren 0

0 Antworten auf die Frage