Разработка запросов MS Access зависает при подключении к SQL Server

StackOverflow https://stackoverflow.com/questions/202944

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Access дает мне ряд замечательных возможностей, не последняя из которых - перекрестные таблицы, но это зависшее соединение с сервером немного сводит меня с ума!

Знает ли кто-нибудь из гуру MS Access, как оптимизировать ODBC-соединение, чтобы оно не выполняло то, что кажется полным сканированием таблицы, когда я просто хочу настроить и построить свои запросы?

Это было полезно?

Решение

Драйвер ODBC передаст SQL Server как можно больше работы, но как только вы используете функцию vba, такую как Nz, или синтаксис, отличный от SQL Server, такой как PIVOT, драйвер ODBC должен вернуть больше данных и индексов, чтобы выполнить работу на стороне клиента.

Согласно другому ответу, либо создавайте свои представления в SQL Server и ссылайтесь на представления, либо используйте проект Access Data.

Примечание:СВОДНЫЕ запросы с неизвестным количеством столбцов не могут обрабатываться в SQL Server тем же способом, которым Access будет делать это изначально, поэтому, если вы запустите сводку в Access для данных SQL Server, вы, скорее всего, извлекете всю таблицу обратно.Сводные запросы должны быть созданы в SQL Server с использованием методов динамического SQL или же предварительно сохраненных представлений, в которых все столбцы жестко запрограммированы.Проверьте эту ссылку, чтобы найти один из способов сделать это:

http://www.sqlservercentral.com/articles/Advanced+Querying/pivottableformicrosoftsqlserver/2434/

Другие советы

Как уже говорили другие, единственный способ повысить производительность работы с большими таблицами - это заставить компонент SQL Server database engine выполнить всю работу за вас.Способ сделать это, который не был упомянут, заключается в использовании сквозного запроса, который позволит вам сохранить весь ваш код в MS Access без необходимости создавать объекты на сервере SQL:

http://support.microsoft.com/kb/303968

Вам придется написать SQL Server T-SQL, а не диалект Access;однако SQL 2005 (при запуске в режиме совместимости 90) поддерживает команду PIVOT.

Моя аналогичная проблема заключалась в том, что соединение ORACLE ODBC зависало после выбора таблицы ссылок / соединения ODBC.Диспетчер задач сказал, что не отвечает через 10 минут.Затем соединение запрашивает ORACLE для всех доступных таблиц.Я включил ведение журнала в ORACLE ODBC Administrator, поэтому ему пришлось записывать все эти данные в журнал, что замедлило получение любых результатов, возможно, на несколько часов.Журнал был размером 60 МБ через час, когда я его выключил, тогда все было в порядке!

Чтобы отключить его, перейдите на вкладку Установка Oracle / Сетевое администрирование / MS ODBC Adminstrator / Трассировка и отключите его!

Хороший ресурс по ODBC находится здесь: http://eis.bris.ac.uk /~ccmjs/odbc_section.html

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

Вы можете создавать и настраивать запросы (представления) в SQL Server с помощью SSMS и сохранять представления в SQL Server для значительного повышения производительности и по-прежнему использовать Access для вашего интерфейса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top