2010-09-08 3 views
2

У меня есть приложение Access 2007 (ранее в Access 2003), которое сталкивается с некоторыми проблемами производительности, когда связанные таблицы базы данных находятся на сетевом диске. В 2003 году приложение работало отлично. Теперь в 2007 году скорость поиска данных с использованием sql и набора записей значительно ухудшилась. Точная площадь, что я встречая вопрос на:Access 2007 Связанная таблица Производительность

DIM rs AS NEW ADODB.RECORDSET 
rs.Open tsSql, CurrentProject.AccessConnection, iKeyset, iLock 

iKeyset устанавливается в 0 и iLock установлен в 3

команда rs.Open находящегося от 4 - 5 секунд, что является проблема из-за того, что на некоторых моих формах это может произойти несколько раз при загрузке.

любые мысли?

EDIT: не говоря уже о том, что, я считаю, что открытие и сохранение форм в представлении дизайна в этих условиях медленнее, чем обычно.

+0

Я воспользовался этим http://support.microsoft.com/kb/275085 (обновил свойства подкаталога для всех таблиц на «[Нет]» ... работая, чтобы увидеть, помогает ли это. – Patrick

+0

вышедший результат дает результаты что я ищу – Patrick

+0

Почему вы используете ADO вместо более естественного DAO? –

ответ

1

В зависимости от используемого оператора SQL (т. Е. Вашей переменной tsSQL), ваш набор записей должен немедленно открываться, будь то ADO или DAO.

Идеи, которые приходят мне на ум: ваша постоянная связь? В 2007 году это, по-видимому, вызывает большую задержку, чем в 2003 году. Возможно, это время отбрасывает и восстанавливает соединение. С формами это происходит, когда ваш источник записей пуст и задан в коде, поэтому рекомендуется всегда иметь источник записей, такой как «tblBlankTable» (небольшая таблица с одной записью, чтобы поддерживать постоянное соединение все время в форме, которая всегда открытый). Задержка 4-5 секунд - это то, что вы получаете, когда этого не происходит. Попытайтесь убедиться, что у вас есть форма, связанная с вашей БД все время, когда вы запускаете rs.open и видите, работает ли это. Возможно, вам понадобится форма с подключением ADO в вашем случае. Там написано много писем на форумах Access об этом.

Быстрее ли это, когда вы единственный пользователь, или когда у других есть БД с открытым файлом блокировки? Это контрольный знак.

Еще одна идея - правильно ли вы проиндексировали все, когда будете обновлены. Разве базовая БД осталась прежней или перешла из MDB в ACCDB? Вы не указали, что находится в tSQL, поэтому, возможно, вы присоединяетесь к неиндексированным полям или к чему-то, что заставляет этот конкретный tSQL работать медленно и просто нужно добавить первичный ключ.

Если ваш «tsSQL» включает в себя запросы, я прочитал, что при обновлении важно перекомпилировать все ваши запросы - перейдите в режим разработки с каждым, затем запустите их, а затем сохраните их снова.

Вы можете попробовать подключиться к БД с помощью собственной строки подключения - для MDB/Jet есть один формат, а другой для ACCDB/Ace. Есть провайдеры для обоих, которые обычно используются из Excel в MDB или ACCDB, но, возможно, могут работать в Access, по крайней мере, для отладки вашей проблемы.

+0

Er, почему бы не возникнуть какой-либо T-SQL, поскольку SQL Server здесь не используется? –

+0

Что касается поддержания постоянного соединения (что на самом деле просто означает, что файл LDB создается один раз и остается открытым), Тони Тоуес имеет мысли здесь: http://www.granite.ab.ca/access/performanceldblocking.htm. На самом деле нет необходимости открывать набор записей - все, что вам нужно сделать, это инициализировать переменную базы данных, указывающую на базовую базу данных, которая приведет к созданию файла LDB. Вам нужно будет очистить его в рутине закрытия приложения (хотя вам также нужно будет сделать это с помощью набора записей). –

+0

Патрик написал инструкцию tsSQL (предположительно SELECT) в своей команде rs.OPEN. Он не дал нам SQL, назначенный этой переменной. Возможно, он включает соединение по полям, которые больше не индексируются после того, как он увеличился с 2003 по 2007 год, или, возможно, подзапросы или что-то, что раньше работало, но теперь медленнее из-за изменений в базе данных. – pghcpa

1

Существует исправление Description of the Access 2007 hotfix package (Access.msp): August 26, 2008, в котором упоминаются проблемы с производительностью, однако это, скорее всего, включено в Access 2007 SP2. Нажмите кнопку «Офис» >> «Параметры доступа» (нижний правый угол) >> вкладка «Ресурсы» и посмотрите, что показывает раздел, озаглавленный «Microsoft Office Access 2007». Состояние шахт 12.0.6535.5005).

+0

Да, я использую sp2 12.0.6535, и клиент тоже ... Я посмотрел на это исправление и, похоже, не помогает. – Patrick

Смежные вопросы