SSRS – повторное использование временной таблицы в нескольких наборах данных

У меня есть отчет о SSRS, который имеет 14 подписок. Все эти подзаголовки считываются из одной и той же хранимой процедуры, но представляют данные по-разному (из-за разных вычислений). То, как я написал СП, выглядит следующим образом:

IF OBJECT_ID('tempdb.dbo.#blabla') IS NOT NULL BEGIN DROP TABLE #blabla END SELECT a,b,c,d,e INTO #blabla WHERE a='bla' IF @type = 1 --report 1 BEGIN SELECT .... END IF @type = 2 --report 2 BEGIN SELECT ..... END 

И так далее для каждого отчета.

Я создаю 3 временных таблицы в начале хранимой процедуры, которые служат для подачи данных, которые нужно преобразовать. Проблема заключается в том, что для каждого суб-отчета таблицы продолжают воссоздавать себя, что заставляет отчет занять много времени, чтобы создать его. Существует ли какое-либо обходное решение, которое может повторно использовать таблицы, созданные в начале хранимой процедуры?

Вы можете создать другую таблицу (контрольную таблицу), содержащую одну строку, которая содержит два столбца – даты начала и окончания таблицы temp. Когда каждый отчет начинается, он должен проверять текущую дату по датам в таблице управления. Если даты не текут, перестройте временные таблицы, иначе просто продолжите обработку. Если вы создаете временные таблицы, которые будут совместно использоваться таким образом, вы, вероятно, не хотите создавать временные таблицы только для обычных таблиц.

Другой подход заключается в выполнении задания SQL Server, которое каждую ночь в полночь перестраивает рабочий стол.

Кстати, вы можете создавать индексы во временных таблицах, и вам следует серьезно подумать о добавлении кластерного индекса в таблицу temp. Вы можете обнаружить, что у вас намного быстрее результаты против такой таблицы, даже если это «маленькая» таблица.

Поскольку вы используете отдельные подзаголовки, запросы для каждого из них не будут использовать ту же транзакцию, где находятся временные таблицы. SQL Server отбрасывает таблицы, когда соединение для запроса теряется.

Вы можете попытаться объединить все свои вложенные отчеты в один. Они позволят вам использовать таблицы #TEMP для каждого запроса, если вы установите флажок Use Single Transaction единую Use Single Transaction в источнике данных .

Другим было бы использование Global Temp Tables – ## TEMP . Глобальные таблицы Temp не получают автоматическое отбрасывание и могут использоваться другими подписями.

  • Отправить отчет SSRS по электронной почте
  • Отображение HTML-контента в отчете SSRS
  • Несколько гипер-ссылок в одной ячейке в отчете SSRS
  • Динамически хранить и отправлять отчеты SSRS в формате PDF с помощью C #
  • Перемещение только подписки с SSRS 2008 на SSRS 2012
  • Определение отчета имеет недопустимое целевое пространство имен rsInvalidReportDefinition
  • Как настроить SQL Azure Reporting?
  • Почему мои диаграммы не отображаются в SSRS 2012?
  • Результат SSRS отличается от результата SSMS тем же запросом
  • SQL find Клиенты, с которыми не удалось связаться за последние 45 дней
  • SSRS Subreport выполняется несколько раз, я хочу, чтобы он выполнялся один раз
  • Interesting Posts

    scope_identity vs ident_current

    Как использовать сценарий развертывания Post для массового ввода CSV на удаленном сервере

    Резервные копии MDF и LDF SQL Server

    Загрузите текст в SQL Server через Powershell

    Fluent NHibernate Отображает сохраненную процедуру, которая возвращает динамический набор столбцов

    .NET эквивалент SQL Server STDistance

    использование GOTO & Labels в SQL внутри SQL-транзакций

    Как улучшить производительность SQL-запросов (коррелированные подзапросы)?

    самый простой способ отображать идентификаторы во время рефакторинга базы данных

    Экспорт результатов запроса в CSV-файл в SQL Server

    Inner Join возвращает избыточные данные, а не ожидаемые данные

    Разница между пользователем и входом в SQL Server

    Использование оператора SELECT для назначения переменной

    Данные Null. Этот метод или свойство не может быть вызван нулевым значением после объединения двух таблиц в C # .net

    Расчет количества проработанных дней, исключая праздники

    Давайте будем гением компьютера.