Гость
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS (sql2016) несколько dataset из одной процедуры / 10 сообщений из 10, страница 1 из 1
09.06.2021, 13:22
    #40076599
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS (sql2016) несколько dataset из одной процедуры
Добрый день!
Есть ли возможность или как то выкрутиться из ситуации. В процедуре высчитывается и возвращается несколько темповых таблиц(набора данных). Надо все эти dataset отобразить одновременно в SSRS.
Я так понимаю по умолчанию используется первый dataset , как можно выйти из данной ситуации?
8-мь раз процедуру запускать не могу, так как она долго работает и dataset друг от друга зависят.
Спасибо!
...
Рейтинг: 0 / 0
09.06.2021, 15:45
    #40076654
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS (sql2016) несколько dataset из одной процедуры
...
Рейтинг: 0 / 0
09.06.2021, 16:10
    #40076663
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS (sql2016) несколько dataset из одной процедуры
komrad,
Спасибо! Я тоже находил сей ответ:

(1) Split the procedure into two separate procedures - one which returns data from EMP, and one from DEPT - and access the new procedures as two separate datasets.

(2) Union the two separate queries (with an additional column to indicate which query produced each row) and filter or conditionally format your report appropriately. The unioned query might look something like this:

SELECT EMPID ID, ENAME NAME, JOB JOB_LOC, SAL, DEPTID, 'EMP' SOURCE
FROM EMP
UNION ALL
SELECT DEPTID ID, DNAME NAME, LOC JOB_LOC, NULL SAL, DEPTID DEPTID, 'DEPT' SOURCE
FROM DEPT


1) Мне не вариант дергать несколько процедур, так как dataset друг от друга зависят.
2) Union соединять запросы тоже нет возможности они разные и писать resulset c 120 колонками обобщенными, так себе идея, да и строк тогда будет больше 100000 в итоговом dataset, что не очень хорошо для ssrs , имхо!

Я думал, вы что нибудь придумали, как обходное решение...
...
Рейтинг: 0 / 0
09.06.2021, 17:08
    #40076685
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS (sql2016) несколько dataset из одной процедуры
medoed

Я думал, вы что нибудь придумали, как обходное решение...

из обходных приходит на ум только такое:

процедура, которая записывает данные в таблицы в tempdb или в вашей бд

скелет процы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create proc test
as 
begin
	if object_id('tempdb..tbl1') is not null
		exec('drop table tempdb..tbl1')
	select 1 [n]
	into tempdb..tbl1 

	if object_id('tempdb..tbl2') is not null
		exec('drop table tempdb..tbl2')
	select 2 [k],3 [m]
	into tempdb..tbl2

	if object_id('tempdb..tbl3') is not null
		exec('drop table tempdb..tbl3')
	select 4[x],5[y],6[z]
	into tempdb..tbl3

	select * from tempdb..tbl1 
	select * from tempdb..tbl2
	select * from tempdb..tbl3 
end



в отчете в свойствах источника данных выставить "Use single transaction when processing the queries"

в первом датасете запускать процедуру

в остальных датасетах вычитывать данные из таблиц tempdb..tblX
...
Рейтинг: 0 / 0
09.06.2021, 17:21
    #40076692
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS (sql2016) несколько dataset из одной процедуры
komrad,
А правильно я понимаю, что таблицы при этом не будут временными (в полном понимании этого слова) и если несколько пользователей запустят отчет одновременно , то будет конфликт или ожидание пока таблицы tempdb..tbl1 не освободятся?
Я думал в этом направлении, но больше в сторону глобальных временных таблиц ##t
...
Рейтинг: 0 / 0
09.06.2021, 17:42
    #40076697
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS (sql2016) несколько dataset из одной процедуры
medoed
komrad,
А правильно я понимаю, что таблицы при этом не будут временными (в полном понимании этого слова) и если несколько пользователей запустят отчет одновременно , то будет конфликт или ожидание пока таблицы tempdb..tbl1 не освободятся?
Я думал в этом направлении, но больше в сторону глобальных временных таблиц ##t

на # и ## у меня не взлетело
для реализации многопользовательности можно записывать spid писателя в tempdb..tblX
передавать его из первого датасета в параметр отчета (hidden)
в других датасетах читать из таблиц для spid = параметру отчета

ну и обыграть существование таблиц в основной процедуре (создавать или нет, чистка записей для текущего @@spid) перед занесением данных
...
Рейтинг: 0 / 0
09.06.2021, 17:52
    #40076700
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS (sql2016) несколько dataset из одной процедуры
komrad,
Спасибо Вам. Я подумаю.
Представляете, если таких отчетов будет много и они будут прерываться , сколько таблиц будет лишних в базе, как база со временем за*рется!
...
Рейтинг: 0 / 0
09.06.2021, 18:09
    #40076711
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS (sql2016) несколько dataset из одной процедуры
medoed
komrad,
Спасибо Вам. Я подумаю.
Представляете, если таких отчетов будет много и они будут прерываться , сколько таблиц будет лишних в базе, как база со временем за*рется!

представить можно что угодно )
как и чистку таблиц от мусора по ночам
...
Рейтинг: 0 / 0
09.06.2021, 18:39
    #40076726
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS (sql2016) несколько dataset из одной процедуры
komrad
medoed
komrad,
Спасибо Вам. Я подумаю.
Представляете, если таких отчетов будет много и они будут прерываться , сколько таблиц будет лишних в базе, как база со временем за*рется!

представить можно что угодно )
как и чистку таблиц от мусора по ночам

Ага , особенно когда ваша база не единственная на сервере и вы не админ, чтоб job запускать по ночам и что то в других базах drop- ать, пусть и в темповой.
...
Рейтинг: 0 / 0
09.06.2021, 19:28
    #40076746
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS (sql2016) несколько dataset из одной процедуры
medoed,

Ок, тогда молчу, иначе ограничений окажется ещё больше.
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS (sql2016) несколько dataset из одной процедуры / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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