Подтвердить что ты не робот

Операция "Аудит выхода" SQL Server занимает много времени.

У нас есть хранимая процедура, которая в течение дня вызывается примерно 300 000 раз в день 15 пользователями. Я вылил каждую строку, и это примерно так же эффективно, как я могу ее получить.

Доступ к хранимой процедуре осуществляется через страницу ASP.NET 4.0 из устаревшего приложения VB6 в базовых условиях Winterms.

Когда я смотрю на файл трассировки SQL, я вижу следующее:

  • exec sp_reset_connection (Использование пула соединений)
  • Вход в систему аудита
  • Выполнение хранимой процедуры
  • Аудит выхода

На шаге 4 я вижу, что чтение и запись являются высокими, что имеет смысл, поскольку это накопление соединения, которое повторно используется в пуле.

Что касается меня, это то, как долго это требуется, иногда занимает занимает 50 мс, а иногда и 400 мс, это совершенно случайно. Из документов, которые я прочитал, "Audit Logout" - это полная продолжительность для всех трех шагов. Но шаги 1-3 были очень быстрыми, например, 0-5 мс. Почему длительность "Аудит входа" длится так долго?

4b9b3361

Ответ 1

Я сейчас "занимаюсь" аналогичной проблемой и наткнулся на это post: http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/84ecfe9e-ff0e-4fc5-962b-cffdcbc619ee

Возможно, это (из вышеупомянутого поста) является решением:

"Одна ошибка в моем анализе была идентифицирована. Когда соединение вытащенный из пула, сервер отправляется sp_reset_connection. Этот reset вызывает audit_logout, за которым следует audit_login. следующий audit_logout не происходит до следующего подключения вытащили из бассейна... поэтому длинные промежутки, которые я вижу, включают время, в течение которого приложение обрабатывает результаты запроса, подключение к пулу соединений, делает что угодно и, наконец, тянет соединение обратно из пула, чтобы начать следующую транзакцию".