Приложение MS Access со связанными таблицами с SQL Server 2005 работает медленно при использовании Windows Authentication от клиентов Windows XP.MS Access 2003 + связанные таблицы с SQL Server 2005 + Аутентификация Windows = медленно
Мы успешно его использовали с использованием проверки подлинности SQL Server, но теперь мы хотим перейти на проверку подлинности Windows для лучшего контроля безопасности.
Установка:
- Сервер баз данных: Windows 2003 Server, SQL Server 2005 с пакетом обновления 2
- Клиент: Windows XP SP3, ODBC для SQL Server драйвер v2000.85.1132.00 приложение
- MS Access: MS Access 2003
- строка соединения:
DRIVER=SQL Server;SERVER=[server name];Connect Timeout=300;Trusted Connection=True;APP=Microsoft Office 2003;WSID=[server name];DATABASE=[db name]
- только протокол TCP/IP сеть включена на сервере.
Медлительность делает не происходит в таких ситуациях:
- App на сервер БД, SQL Authentication Server
- App на сервер БД, проверка подлинности Windows
- App на клиенте Windows XP, Аутентификация SQL Server
- SQL Server Management Studio на клиенте, проверка подлинности Windows. Я провел небольшой тест с запуском 15 запросов в SQL MS. Это быстро и не вызывало никаких событий входа/выхода из системы в журнале событий безопасности на сервере.
Я проанализировал медлительность с помощью SQL Server Profiler и журнал событий на сервере, и он, кажется, сводится к следующему:
- Приложение выполняет запрос
- Новое соединение SQL Server открывается (видимо в профиле SQL Server)
- Идентификатор пользователя проверяется (отображается в журнале событий безопасности на сервере, происходит событие входа/выхода из системы). Это занимает несколько сотен миллисекунд.
- Запрос выполняется на SQL Server
- Результаты возвращаются для доступа
Это происходит для каждого запроса. Некоторые формы запускают + - 10 запросов при показе новой записи (обновление подформ, загрузка значений для комбо и т. Д.). Это приводит к очень низкой производительности.
Конечно, настройка нового подключения к SQL Server для каждого запроса не требуется, и повторное использование соединений может решить проблему. Я искал информацию о том, как убедиться, что Access/ODBC делает правильный пул соединений. Я нашел эти статьи MS KB:
Frequently Asked Questions About ODBC Connection Pooling
How to Enable Connection Pooling in an ODBC Application
Я пытался вызвать функцию SQLSetEnvAttr от главной формы приложения Access, но это не улучшило результаты.
Любая помощь очень ценится.
Вы также можете проверить, что у вас нет проблем с DNS, когда клиент разрешает имя контроллера домена, который выполняет аутентификацию. Я обнаружил, что проблемы DNS могут быть причиной всех видов странных проблем с Access/ODBC/SQL Server, которые, похоже, не связаны. –
Я думаю, что Фентон находится на правильном пути. Является ли приложение Front end запущенным в другом домене/лесу, чем экземпляр SQL Server? – JohnFx
Можете ли вы разместить строку подключения? Уточните свои местные значения. :) –