Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SSRS and SP / 14 сообщений из 14, страница 1 из 1
15.08.2019, 13:05
    #39849728
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
Недавно начал разбираться с SQL Reporting Services, вещь красивая, но некоторые вещи сразу ввели в ступор...
Верно ли я понимаю, что для отчета SSRS , если он базируется на хранимой процедуре - можно использовать только один (первый) RecordSet?
ссылка

Reporting Services supports stored procedures that return only one set of data. If a stored procedure returns multiple result sets, only the first one is used.

В текущей архитектуре у меня часто бывает два и более вывода данных из SP , например заголовочная часть и сами данные.
Получается, если в качестве средства отчетов я выберу SSRS, то мне надо переписывать все отчёты?

Как вы с этим живёте , может быть это в последних версиях исправлено или вы юзаете 1-н отчет -> 1-хранимка или вовсе отказались от хранимок и пользуетесь select - ами (ORM средства например генерят автоматические запросы)?
Вообщем на моём первом свидании с SSRS случился конфуз, как быть? :-(
...
Рейтинг: 0 / 0
15.08.2019, 13:23
    #39849742
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
medoedНедавно начал разбираться с SQL Reporting Services, вещь красивая, но некоторые вещи сразу ввели в ступор...
Верно ли я понимаю, что для отчета SSRS , если он базируется на хранимой процедуре - можно использовать только один (первый) RecordSet?
ссылка

Reporting Services supports stored procedures that return only one set of data. If a stored procedure returns multiple result sets, only the first one is used.

В текущей архитектуре у меня часто бывает два и более вывода данных из SP , например заголовочная часть и сами данные.
Получается, если в качестве средства отчетов я выберу SSRS, то мне надо переписывать все отчёты?

Как вы с этим живёте , может быть это в последних версиях исправлено или вы юзаете 1-н отчет -> 1-хранимка или вовсе отказались от хранимок и пользуетесь select - ами (ORM средства например генерят автоматические запросы)?
Вообщем на моём первом свидании с SSRS случился конфуз, как быть? :-(Да, все так. Давно не использовал новые версии, но в 2014-м все еще так было.

Приходилось изворачиваться, вводя в процедуру доп. параметр, отвечающий за то, какой рекордсет считать и возвращать, и вызывать процедуру несколько раз с разными значениями параметра.
...
Рейтинг: 0 / 0
15.08.2019, 13:25
    #39849745
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
MinamotomedoedНедавно начал разбираться с SQL Reporting Services, вещь красивая, но некоторые вещи сразу ввели в ступор...
Верно ли я понимаю, что для отчета SSRS , если он базируется на хранимой процедуре - можно использовать только один (первый) RecordSet?
ссылка

Reporting Services supports stored procedures that return only one set of data. If a stored procedure returns multiple result sets, only the first one is used.

В текущей архитектуре у меня часто бывает два и более вывода данных из SP , например заголовочная часть и сами данные.
Получается, если в качестве средства отчетов я выберу SSRS, то мне надо переписывать все отчёты?

Как вы с этим живёте , может быть это в последних версиях исправлено или вы юзаете 1-н отчет -> 1-хранимка или вовсе отказались от хранимок и пользуетесь select - ами (ORM средства например генерят автоматические запросы)?
Вообщем на моём первом свидании с SSRS случился конфуз, как быть? :-(Да, все так. Давно не использовал новые версии, но в 2014-м все еще так было.

Приходилось изворачиваться, вводя в процедуру доп. параметр, отвечающий за то, какой рекордсет считать и возвращать, и вызывать процедуру несколько раз с разными значениями параметра.

Как бы это помягче сказать - хммм, это же отвратительно?!
...
Рейтинг: 0 / 0
15.08.2019, 13:46
    #39849760
Ken@t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
medoedКак бы это помягче сказать - хммм, это же отвратительно?!
Отвратительно возвращать из SP более одного набора, динамический набор столбцов и ещё несколько кэйсов .
...
Рейтинг: 0 / 0
15.08.2019, 14:47
    #39849806
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
Ken@tmedoedКак бы это помягче сказать - хммм, это же отвратительно?!
Отвратительно возвращать из SP более одного набора, динамический набор столбцов и ещё несколько кэйсов .
Насчёт динамики возможно. Но насчёт нескольких рекордсетов не соглашусь (Header и Data)... Зачем мне для этого делать несколько XP? Есть одна процедура которая возвращает наименование клиента например (в заголовке) , а внизу в данных остатки для него.
Ну да ладно, это всё лирика...
...
Рейтинг: 0 / 0
15.08.2019, 15:02
    #39849819
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
medoed, да это печаль... зачастую если все N вызова используют общую тяжелую часть, то либо используется трюк с кешированием и сингл транзакшн ... либо все мержится в один датасет с колоночкой sectionId и последующим растаскиванием данных
...
Рейтинг: 0 / 0
15.08.2019, 15:11
    #39849832
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
buser,
Я на будущее, думаю может данные в XML складывать в процедуре, он же поддерживает иерархию данных. А, потом уже на стороне SSRS парсить XML, но это предположение, практика может показать это извратом!
...
Рейтинг: 0 / 0
15.08.2019, 15:11
    #39849833
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
medoed,

Добавть два параметра @show_header и @show_details и делать два
...
Рейтинг: 0 / 0
15.08.2019, 15:16
    #39849836
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
Гавриленко Сергей Алексеевичmedoed,

Добавть два параметра @show_header и @show_details и делать два

Да, конечно , это было бы логичным, особенно , если систему только начинаешь проектировать, но...
Получается, я свою базу и все текущие XP в ней должен подстроить под ограничения SSRS , добавляя в каждую процедуру служебные параметры. Подумаешь, перекомпилить 200 процедур для отчетов,а если ResulSet -ов несколько, то вообще песня!
...
Рейтинг: 0 / 0
15.08.2019, 15:39
    #39849867
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
medoedГавриленко Сергей Алексеевичmedoed,

Добавть два параметра @show_header и @show_details и делать два

Да, конечно , это было бы логичным, особенно , если систему только начинаешь проектировать, но...
Получается, я свою базу и все текущие XP в ней должен подстроить под ограничения SSRS , добавляя в каждую процедуру служебные параметры. Подумаешь, перекомпилить 200 процедур для отчетов,а если ResulSet -ов несколько, то вообще песня!
Вам в любом случае делать отчеты RS, в рамках этой работы и разделением заниматься.

Как вариант - в процедуре заполнять некоторые кэширующие таблицы, с некоторым идентификатором, в процедуре в первом датасете возвращать идентификатор.
Дальше написать небольшие процедуры, которые по идентификатору будут из кэширующих таблиц просто читать данные.
Тут может быть два подхода, как эти данные потом очищать - либо в рамках определенного мэйнтенанс-плана, либо добавить отдельную процедуру, которая будет только подчищать таблицы, и в рамках выполнения отчета эту процедуру в конце вызывать.

В любом случае какого то единого подхода я не знаю.

С XML не советовал бы связываться, не помню ничего хорошего о его использовании в RS, может и ошибаюсь.
...
Рейтинг: 0 / 0
15.08.2019, 15:58
    #39849880
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
MinamotoВам в любом случае делать отчеты RS, в рамках этой работы и разделением заниматься.

Как вариант - в процедуре заполнять некоторые кэширующие таблицы, с некоторым идентификатором, в процедуре в первом датасете возвращать идентификатор.
Дальше написать небольшие процедуры, которые по идентификатору будут из кэширующих таблиц просто читать данные.
Тут может быть два подхода, как эти данные потом очищать - либо в рамках определенного мэйнтенанс-плана, либо добавить отдельную процедуру, которая будет только подчищать таблицы, и в рамках выполнения отчета эту процедуру в конце вызывать.

В любом случае какого то единого подхода я не знаю.

С XML не советовал бы связываться, не помню ничего хорошего о его использовании в RS, может и ошибаюсь.

Вас понял, благодарю за опытные советы! Без опыта с SSRS я бы набил шишек...
...
Рейтинг: 0 / 0
15.08.2019, 16:19
    #39849889
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
medoed,

в некоторых случаях можно использовать общий ненормализованный датасет, в котором будут дублироваться данные шапки в каждой строке деталей, например. Но последствия этого решения очевидны - увеличение объема данных.
...
Рейтинг: 0 / 0
15.08.2019, 16:22
    #39849893
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
Кстати, это еще одна причина не использовать процедуры для получения наборов данных в концепции приложения в целом. Данные должны возвращать только запросы с использованием таблиц, функций и представлений.
...
Рейтинг: 0 / 0
15.08.2019, 16:23
    #39849895
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS and SP
Владислав Колосовmedoed,

в некоторых случаях можно использовать общий ненормализованный датасет, в котором будут дублироваться данные шапки в каждой строке деталей, например. Но последствия этого решения очевидны - увеличение объема данных.
Да и возможно этот способ быстрее по реализации, нежели XML, только выводиться будет медленнее и нагрузка на сеть вырастет...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SSRS and SP / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]