Подписки SSRS-как просмотреть всех получателей отчетов

Я написал отчет SSRS, чтобы помочь мне отслеживать подписки SSRS. Я перенастроил скрипт, который будет использовать Reportserver.dbo.Подписки.LastStatus для просмотра получателей электронной почты, однако, он будет перечислять только первые 520 символов LastStatus. Поскольку некоторые из наших списков рассылки довольно велики, некоторые имена, которые ищет мой скрипт, не найдены (хотя они являются частью дистрибутива). Ниже приведен сценарий, которым я являюсь использование:

SELECT Reportname = c.Name 
  ,FileLocation = c.Path
  ,SubscriptionDesc=su.Description 
  ,Subscriptiontype=su.EventType 
  ,su.LastStatus 
  ,su.LastRunTime 
  ,Schedulename=sch.Name 
  ,ScheduleType = sch.EventType 
  ,ScheduleFrequency = 
   CASE sch.RecurrenceType 
   WHEN 1 THEN 'Once' 
   WHEN 2 THEN 'Hourly' 
   WHEN 4 THEN 'Daily/Weekly' 
   WHEN 5 THEN 'Monthly' 
   END 
  ,su.Parameters 
  FROM Reportserver.dbo.Subscriptions su 
  JOIN Reportserver.dbo.Catalog c 
    ON su.Report_OID = c.ItemID 
  JOIN Reportserver.dbo.ReportSchedule rsc 
    ON rsc.ReportID = c.ItemID 
   AND rsc.SubscriptionID = su.SubscriptionID 
  JOIN Reportserver.dbo.Schedule Sch 
    ON rsc.ScheduleID = sch.ScheduleID 
WHERE  LastStatus like @Email
ORDER BY LastRunTime DESC

любой код, который я нашел в интернете использует столбец LastStatus для отображения этих данных. Если у кого-нибудь есть предложения относительно более полного перечня всех членов списка рассылки отчетов, я был бы признателен.

1 ответов


Ниже приведен SQL для запроса полного текста параметров подписки. Я думаю, что это будет работать с очень длинными списками адресов, но у меня нет тестового сервера с длинными списками адресов.

Если использовать это в производстве, я бы, вероятно, бросил пару WITH ( NOLOCK )и не ожидал бы поддержки от MS по проблемам.

   ;
   WITH subscriptionXmL
          AS (
               SELECT
                SubscriptionID ,
                OwnerID ,
                Report_OID ,
                Locale ,
                InactiveFlags ,
                ExtensionSettings ,
                CONVERT(XML, ExtensionSettings) AS ExtensionSettingsXML ,
                ModifiedByID ,
                ModifiedDate ,
                Description ,
                LastStatus ,
                EventType ,
                MatchData ,
                LastRunTime ,
                Parameters ,
                DeliveryExtension ,
                Version
               FROM
                ReportServer.dbo.Subscriptions
             ),
                 -- Get the settings as pairs
        SettingsCTE
          AS (
               SELECT
                SubscriptionID ,
                ExtensionSettings ,
    -- include other fields if you need them.
                ISNULL(Settings.value('(./*:Name/text())[1]', 'nvarchar(1024)'),
                       'Value') AS SettingName ,
                Settings.value('(./*:Value/text())[1]', 'nvarchar(max)') AS SettingValue
               FROM
                subscriptionXmL
                CROSS APPLY subscriptionXmL.ExtensionSettingsXML.nodes('//*:ParameterValue') Queries ( Settings )
             )
    SELECT
        *
    FROM
        SettingsCTE
    WHERE
        settingName IN ( 'TO', 'CC', 'BCC' )