Почему мой Access 2010 ADP не фильтрует свои операторы SQL при подключении к MSSQL 2008 R2?

672
richardtallent

Я использую MSSQL MS для большинства административных задач в базах данных SQL Server 2008 R2, но считаю, что использование Access (через ADP, а не связанные таблицы) для просмотра и редактирования необработанных данных таблиц намного эффективнее. (Это только для использования системного администратора, конечно, пользовательский доступ осуществляется через веб-приложение, и таблицы, о которых идет речь, относительно малы, возможно, несколько тысяч строк.)

Однако, так как переход на Access 2010, производительность танком при фильтрации и сортировки таблиц в АДФ, и смотреть его через Profiler, я знаю, почему - доступ не только не готовит WHEREпункт для MSSQL для реализации фильтров, она просит для необработанная таблица несколько раз, независимо от того, какие фильтры установлены. Другими словами, он делает что-то вроде этого:

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" 

(Я пропустил несколько дополнительных операторов, где он читает расширенные свойства столбца.)

Какого черта здесь делает Access, и как я могу заставить его использовать SQL Server для выполнения фильтрации и сортировки, чтобы не совершать многократные поездки каждый раз, когда меняются фильтры таблиц?

2
Это хороший вопрос, и я не знаю ответа, но моя интуиция подсказывает мне, что он использует объекты набора записей на стороне клиента и / или переносит данные сервера в виде копии (в ОЗУ) в базу данных JET / OLEDB и затем с помощью OLEDB выполнить фильтрацию. Почему в мире это происходит при поддержке сервера SQL, я понятия не имею. Может быть, это настройка в ADP? Может быть, это драйвер, который вы использовали для подключения к SQL из ADP? Некоторые драйверы поддерживают только наборы записей на стороне клиента, в то время как другие более функциональны и поддерживают серверную часть. Horn OK Please 11 лет назад 0
Длинный выстрел: [попробуйте это] (http://accessexperts.net/blog/2011/11/02/windows-7-64bit-slow-with-access-2007-solved/). harrymc 11 лет назад 0
Очевидно, у меня нет достаточно высокой репутации, чтобы ответить на мой собственный вопрос, но я нашел подходящее решение. Я создал VIEW в MSSQLSM, который выбирает строки из моей таблицы, основываясь на фильтрах, которые у меня есть в строке в скретч-таблице, предназначенной именно для этого. Затем я могу отредактировать строки в Access, отредактировав их в представлении, и это на порядок быстрее. Просто нужно отредактировать строку фильтра (которую я оставляю открытой в другом окне) и обновить вид по мере необходимости. richardtallent 11 лет назад 0

0 ответов на вопрос