Как отсортировать отображение подписки в SSRS/SQL Server 2016
Есть ли способ настроить порядок сортировки подписок на отчет? У нас есть несколько подписок на один конкретный отчет, и все они следуют определенной схеме именования для описания. Однако подобные подписки не отображаются вместе, так как подписки не сортируются.
Я пытался сделать следующее:
- Выполните поиск всех процедур, которые ссылались на что-либо о подписках и добавили "порядок по описанию" в конец запроса, который он выполнял, но это не имело никакого эффекта.
Если я не ошибаюсь, сортировка должна выполняться на клиентском API jQuery, который он использует, но я не нашел способа заставить его сортировать.
Это службы отчетов SQL Server 2016 (SSRS 2016).
1 ответ
Я не думаю, что вы можете / должны настроить страницу отчета об управлении SSRS, но если вам нужен список подписок и возможность фильтровать и сортировать его, этот запрос может быть полезен. Это совокупность нескольких других запросов, найденных в Интернете.
select
c.Path as [ReportPath],
us.UserName as [SubscriptionOwner],
uc.UserName as [ReportModifiedBy],
s.LastStatus as [LastStatus],
s.LastRunTime as [LastRun],
Convert(XML,[ExtensionSettings]).value('(//ParameterValue/Value[../Name="TO"])[1]','nvarchar(1024)') as [To],
Convert(XML,[ExtensionSettings]).value('(//ParameterValue/Value[../Name="CC"])[1]','nvarchar(1024)') as [CC],
Convert(XML,[ExtensionSettings]).value('(//ParameterValue/Value[../Name="RenderFormat"])[1]','nvarchar(1024)') as [Render Format],
Convert(XML,[ExtensionSettings]).value('(//ParameterValue/Value[../Name="Subject"])[1]','nvarchar(1024)') as [Subject],
TARDIS.dbo.getSubscriptionParameters (s.SubscriptionID) as [parameters]
from ReportServer.dbo.Subscriptions s
join ReportServer.dbo.Catalog c on c.ItemID = s.Report_OID
join ReportServer.dbo.ReportSchedule rs on rs.SubscriptionID = s.SubscriptionID
join ReportServer.dbo.Users uc on uc.UserID = c.ModifiedByID
join ReportServer.dbo.Users us on us.UserID = s.OwnerId
join msdb.dbo.sysjobs j on j.name = CONVERT(nvarchar(1024),rs.ScheduleId)
order by
1, 2
Вы также можете получить список подписок через PowerShell, например:
$server = 'http://myserver.mycompany.com/reportserver'
$site = '/'
$rs2010 = New-WebServiceProxy -Uri "$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential
$subscriptions = $rs2010.ListSubscriptions($site)
$subscriptions | Sort-Object -property path,owner,SubscriptionID -Unique | select Path, Owner, SubscriptionID