У меня странная проблема, и я был бы рад, если кто-нибудь может мне помочь.
В нашей компании мы используем SSRS для отправки ежедневных отчетов в одно и то же руководство.
У нас есть 3 типа отчетов, из которых 3 выполняется больше раз с разными параметрами. Первый выполняется 2 раза, второй - 3 раза, а третий - тяжелее и падает в 6 раз.
Все 3 запроса имеют одинаковую философию с использованием таблиц CTE. Запросы, разработанные в SSMS и добавленные в отчет через Visual Studio.
И тут начинается безумие.
В первом издании они у нас одинаковые. Два из них выполнены без ошибок, и письма были доставлены.
Третий отчет падает с ошибкой
Microsoft.ReportingServices.ReportProcessing.ReportProcessingException:
Не удалось выполнить запрос для набора данных 'ZZZ'. --->
System.Data.SqlClient.SqlException: неверное имя объекта
'Tempdb.dbo.TEMP_ID_XXXX'.
Когда мы отключаем два других отчета и выполняем третий вручную, отчет успешно завершается.
Но это только в некоторые дни, в другие дни все отчеты доставляются успешно.
Тогда мы решили разделить график этих 3 отчетов. Итак, мы создаем 2 рабочих шага. Один для первых двух и один для третьего отчета.
Первые два дня отчеты доставлялись так, как мы хотим, но со вчерашнего дня мы столкнулись с той же проблемой.
Как я видел, этапы задания имеют разницу во времени в несколько миллисекунд, хотя отчеты по первому этапу занимают около 15 секунд.
Я проверил журнал выполнения и увидел, что для версии с одним параметром Выполнение третьего отчета требуется:
12990 мс, когда он выполняется вручную через портал.
23845мс, когда оно выполняется как задание (параллельно с другими 5 параметрами выполнения)
35761мс при выполнении параллельно со всеми остальными отчетами (всего 11) Сбой
Я подумал, что, может быть, если добавление и дополнительный шаг между шагом 2 отчетов, который приостановит работу на 1 минуту, решит мою проблему.
Кто-нибудь сталкивался с подобной проблемой?
Буду признателен за любую помощь!