У меня есть отчет, который отображает данные, возвращенные из хранимой процедуры. С помощью профилировщика я могу перехватить вызов хранимой процедуры из служб отчетов.
В отчете не указывается время ожидания отчета, но я могу выполнить хранимую процедуру из SSMS, и он возвращает данные через пять-шесть секунд.
Обратите внимание, что в примере выполнения теста в отчет возвращаются только две строки для рендеринга, хотя в рамках хранимой процедуры он мог обрабатывать тысячи или даже миллионы записей, чтобы сопоставить результат, переданный обратно службам отчетов.
Я знаю, что хранимая процедура могла бы быть оптимизирована больше, но я не понимаю, почему SSRS будет время ожидания, когда кажется, что выполнение только из нескольких секунд для выполнения из SSMS.
Также появилась другая проблема. Если я воссоздаю хранимую процедуру, отчет снова начинает отлично отображаться. Это нормально, за исключением того, что через короткий промежуток времени отчет снова начинает отсчитываться.
Возвращение тайм-аута, по-видимому, связано с добавлением новых данных в основную таблицу, с которой работает отчет. В примере, который я тестировал, для вставки в отчет достаточно одной сотни новых записей.
Я думаю, более правильно, что это не отчет, который является основной причиной. Это хранимая процедура, которая вызывает тайм-аут при выполнении из SSRS.
Как только время снова истечет, лучше всего исправить, что я до сих пор воссоздаю хранимую процедуру. Это не кажется идеальным решением.
Проблема также, кажется, возникает только в нашей производственной среде. Наши платформы тестирования и разработки, похоже, не демонстрируют ту же проблему. Хотя dev и test не имеют того же объема записей, что и production.