I have the same requirement as you have now ...
See the stored procedure below.
CREATE PROCEDURE [dbo].[GetSubscriptionData] AS BEGIN SET NOCOUNT ON; WITH [Sub_Parameters] AS ( SELECT [SubscriptionID], [Parameters] = CONVERT(XML,a.[Parameters]) FROM [Subscriptions] a ), [MySubscriptions] AS ( SELECT DISTINCT [SubscriptionID], [ParameterName] = QUOTENAME(p.value('(Name)[1]', 'nvarchar(max)')), [ParameterValue] = p.value('(Value)[1]', 'nvarchar(max)') FROM [Sub_Parameters] a CROSS APPLY [Parameters].nodes('/ParameterValues/ParameterValue') t(p) ), [SubscriptionsAnalysis] AS ( SELECT a.[SubscriptionID], a.[ParameterName], [ParameterValue] = ( SELECT STUFF((SELECT [ParameterValue] + ', ' as [text()] FROM [MySubscriptions] WHERE [SubscriptionID] = a.[SubscriptionID] AND [ParameterName] = a.[ParameterName] FOR XML PATH('') ),1, 0, '') +'' ) FROM [MySubscriptions] a GROUP BY a.[SubscriptionID],a.[ParameterName] ) SELECT DISTINCT (a.[SubscriptionID]), c.[UserName] AS Owner, b.Name, b.Path, a.[Locale], a.[InactiveFlags], d.[UserName] AS Modified_by, a.[ModifiedDate], a.[Description], a.[LastStatus], a.[EventType], a.[LastRunTime], a.[DeliveryExtension], a.[Version], sch.StartDate,
This is a simplified request to get all SSRS subscribers.
SELECT USR.UserName AS SubscriptionOwner ,SUB.ModifiedDate ,SUB.[Description] ,SUB.EventType ,SUB.DeliveryExtension ,SUB.LastStatus ,SUB.LastRunTime ,SCH.NextRunTime ,SCH.Name AS ScheduleName ,CAT.[Path] AS ReportPath ,CAT.[Description] AS ReportDescription FROM dbo.Subscriptions AS SUB INNER JOIN dbo.Users AS USR ON SUB.OwnerID = USR.UserID INNER JOIN dbo.[Catalog] AS CAT ON SUB.Report_OID = CAT.ItemID INNER JOIN dbo.ReportSchedule AS RS ON SUB.Report_OID = RS.ReportID AND SUB.SubscriptionID = RS.SubscriptionID INNER JOIN dbo.Schedule AS SCH ON RS.ScheduleID = SCH.ScheduleID ORDER BY USR.UserName, CAT.[Path];
if you still have any request, comment on it.