Дизайн запросов MS Access зависает при подключении к SQL Server - PullRequest
2 голосов
/ 15 октября 2008

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

Доступ дает мне ряд изящных вещей, не в последнюю очередь это Crosstabs, но такое зависшее соединение с сервером сводит меня с ума!

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

Ответы [ 4 ]

4 голосов
/ 15 октября 2008

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

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

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

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

1 голос
/ 18 августа 2010

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

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

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

1 голос
/ 15 октября 2008

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

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

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

0 голосов
/ 15 октября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...