У нас есть приложение Delphi 7, которое работает как расширение ISAPI в IIS6. Код использует ADO для подключения к базе данных MS SQL 2000 и выполняет много операций чтения в базу данных (без записи). Если я просматриваю события входа и выхода из аудита в профилировщике SQL, я вижу, что многочисленные запросы к приложению приводят только к одному событию входа в аудит. Однако, если я запускаю тот же код извне IIS (то есть тестовое приложение, вызывающее тот же метод в dll), я вижу много событий входа и выхода из системы. Я предполагаю, что IIS выполняет пул автоматических подключений, а я ничего не делаю. Я хотел бы видеть такое же поведение, когда я запускаю dll из-за пределов IIS по соображениям производительности - приложение почти на 100% медленнее в этой ситуации. Как я могу получить пул соединений ADO, когда DLL работает за пределами IIS?
РЕДАКТИРОВАТЬ - я на самом деле использую SQL ole провайдера. Строка подключения выглядит следующим образом:
Поставщик = SQLOLEDB.1; Исходный каталог =% s; Источник данных =% s; Пароль =% s; Идентификатор пользователя =% s; Объединение в пул = True; Минимальный размер пула = 5; Максимальный размер пула = 50; Время жизни соединения = 120
Я пытался добавить атрибут Pooling = True, но это ничего не меняет. Кроме того, я узнал, что события входа в систему и выхода из системы аудита не обязательно изменяются для пула соединений, поэтому я начал использовать счетчики производительности Logins / sec, Logouts / sec и User Connections (SQLServer: GeneralStatistics), чтобы определить, происходит ли пул соединений. Изнутри IIS я вижу много входов в систему в секунду и никаких выходов из системы в секунду. За пределами IIS я вижу много входов в систему и выходов из системы в секунду, а количество пользовательских подключений колеблется (в IIS оно сохраняется).