Подписки 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' )