У нас очень неприятная проблема в нашей производственной среде.
У нас есть отчет, который иногда возвращается очень быстро, а иногда вообще не возвращается. Когда проблема возникает, отчет будет обрабатываться в течение 15 минут или около того, после чего браузер отобразит ошибку «Не удается отобразить веб-страницу». Эта проблема носит спорадический характер, обычно длится несколько дней, затем мы получаем несколько дней очень быстрой обработки, а затем снова медленной. Когда отчет работает нормально, мы можем вернуть более 14 тыс. записей примерно за 10 секунд.
Наша команда данных сообщила мне, что на серверах SQL ничего не происходило в то время, когда мы наблюдаем переключение с медленного на быстрое. Никаких перестроек индекса, пересчета статистики и т. д.
Базовый запрос отчета (хранимая процедура) всегда выполняется быстро. Даже когда мы сталкиваемся с проблемой, я могу подключиться к рабочей базе данных с тем же пользователем, который используется в отчете, и запустить хранимую процедуру с теми же параметрами, и она всегда быстро возвращается. Мы проверили блокировку, и ничего не происходит.
В отчете довольно много параметров. Я видел сообщения о «анализе параметров», поэтому я создал версию отчета без параметров и все равно получаю те же результаты.
Ничего сложного в этом отчете нет. Это стол. На уровне отчета не выполняется группировка или фильтрация. Нет подотчетов. В отчете используется интерактивная сортировка.
Отчет может возвращать до 14 тыс. записей. Общий объем данных для этого составляет около 2 МБ. Но, как я уже говорил ранее, в некоторые дни отчет работает нормально и возвращает даже максимальное количество записей всего за несколько секунд.
В отчете используется общий источник данных, который также используется многими другими отчетами, в которых не возникает этой проблемы.
В базе данных отчетов мы видим, что записи добавляются в таблицу RunningJobs для этих запросов отчетов, но мы не видим, чтобы после этого происходила какая-либо обработка. Как будто сервер отчетов забывает о них.
Наша текущая точка зрения или мысль состоит в том, что сервер отчетов не работает должным образом, поскольку эти записи в RunningJobs просто остаются там и не обрабатываются.
Кто-нибудь знает, почему задание может находиться в таблице RunningJobs? Мы должны увидеть что-то в файлах журнала сервера отчетов, если эти задания выполняются, верно? Есть ли что-то еще, что мы должны проверить?
Наш сервер отчетов имеет версию 9.00.3050.00. Мы получаем доступ через веб-элемент управления Report Viewer.