如何在SSRS / SQL Server 2016中对订阅显示进行排序

时间:2017-04-18 00:13:59

标签: sql-server sorting reporting-services sql-server-2016

是否有自定义报表订阅的排序方式?我们有一个特定报告的订阅,它们都遵循描述的某个命名方案。但是,订阅不会一起显示,因为订阅似乎没有排序。

我试图执行以下操作:

  • 搜索引用任何内容的所有过程 订阅并添加“按描述顺序”到结尾 查询它运行,但这没有效果。

如果我没有弄错的话,必须在它使用的客户端jQuery API上进行排序,但我还没有找到一种方法来强制它进行排序。

这是SQL Server 2016 Reporting Services(SSRS 2016)。

1 个答案:

答案 0 :(得分:0)

我认为您不能/应该自定义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