Отчет SSRS выполняется медленнее в режиме предварительного просмотра / Средство просмотра отчетов

#reporting-services #visual-studio-2019 #sql-server-data-tools #ssdt-2019

#службы отчетов #visual-studio-2019 #sql-server-data-tools #ssdt-2019

Вопрос:

Я использую Visual Studio 2019 и использую Microsoft Reporting Services Projects Extension v2.6.7. Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть отчет, который обрабатывает около 60 тысяч записей, отчет сложный и содержит группы, повторяющиеся заголовки, фильтры набора данных, а также код VB.

Хранимая процедура, используемая для этого отчета, выполняется менее чем за 10 секунд, а при развертывании отчета на сервере отчетов подготовка отчета завершается менее чем за 2 минуты. Но когда я запускаю тот же отчет с помощью Visual Studio в режиме предварительного просмотра или запуска (просмотр отчетов), отчет выполняется в течение 17-20 минут. Я использовал SQL Profiler и вижу, что время выполнения хранимой процедуры почти совпадает со временем выполнения отчета. Хранимая процедура предназначена для решения проблемы с перехватом параметров, и я не вижу никаких проблем с процедурой.

Со стороны отчета я пробовал Keeptogether = false, интерактивный размер и т.д., Что может повлиять на производительность. Они выглядят нормально.

Я также пытался добавить WorkingSetMaximum для увеличения объема памяти, но по-прежнему безуспешно. Клиент, с которым я работаю, требует, чтобы файл RDLC был интегрирован в их приложение, и не захочет развертываться на сервере отчетов по своей собственной причине.

Как я могу ускорить выполнение моего отчета в режиме предварительного просмотра Visual Studio / просмотра отчетов (режим запуска), чтобы я мог сопоставить производительность отчета с производительностью, которую я получаю на сервере отчетов.

Также, если кто-нибудь может сказать, есть ли разница в том, как работает рендеринг отчета на сервере отчетов и в режиме предварительного просмотра.

Редактировать 1 — Сервер отчетов и база данных настроены на моем ноутбуке, и у него нет другой конфигурации.

Редактировать 2 — Еще одно наблюдение, которое я собрал, запустив SQL Profiler, заключается в том, что в режиме предварительного просмотра соединение остается открытым, а время извлечения данных оправдывает время выполнения отчета. Оба они одинаковы. Но когда я запускаю отчет через диспетчер отчетов с того же компьютера, процедура завершается за считанные секунды, и даже отчет отображается быстрее. И, как я уже упоминал выше, я позаботился о перехвате параметров. Сейчас я пытаюсь понять, есть ли разница в том, как механизм SSRS обрабатывает обработку отчетов и извлечение данных для предварительного просмотра, и когда отчет развертывается в службе отчетов.

Комментарии:

1. При визуализации отчета в Visual Studio всю работу выполняет ваш локальный компьютер. Я предполагаю, что ресурсы вашего ПК (процессор / память) намного ниже, чем у сервера.

2. Сервер отчетов @AlanSchofield и база данных настроены на моем ноутбуке, и у него нет другой конфигурации.

3. Используйте существующую платформу, но принудительно используйте устаревшие CAS [code access security] Безопасность в Winforms <NetFx40_LegacySecurityPolicy enabled =»true» /> В приложении ASP Net <trust legacyCasModel= «true» level =»Full»/> Использование этого позволяет снизить производительность файла RDLC, но производительность отчета в Visual Studio по-прежнему остается под вопросом

Ответ №1:

Я наткнулся на это обсуждение вопросов и ответов в MSDN. Я попытался повторить это, и это дало мне исправление, изменив уровень доверия для центров сертификации в файле конфигурации. Но все же у меня есть вопрос относительно того, как работает средство просмотра отчетов в Visual Studio. Есть ли какой-либо аналогичный параметр, который мы используем в конфигурации приложения, который можно использовать для улучшения производительности разработки и тестирования в Visual Studio.

Блог MSDN

Используйте существующую платформу, но принудительно используйте устаревшие центры сертификации [code access security] Безопасность

  1. В Winforms <NetFx40_LegacySecurityPolicy enabled="true" />
  2. В приложении ASP Net <trust legacyCasModel="true" level="Full"/>