Как отсортировать отображение подписки в 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 
Другие вопросы по тегам