繁体   English   中英

SSRS 订阅审计

[英]SSRS Subscription Auditing

我的 SSRS 订阅显示为已禁用,我真的很想知道是哪个用户禁用了它,因为这并不是要禁用的。 有没有办法通过SSMS找出来? 到目前为止,我在拖网时无法找到任何此类信息。 谢谢

以下 SQL 将返回您的所有订阅。 如果订阅被禁用,我已经添加了一个列[IsDisabled] [SubscriptionModifiedBy]是修改订阅的人。

我在我的GitHub 项目中使用此 SQL 构建了一个报告。

WITH
report_users
AS
(
   SELECT 
        [UserID]
       , [UserName]
       , [SimpleUserName] = LOWER(RIGHT([UserName], (LEN([UserName]) - CHARINDEX('\', [UserName]))))
   FROM 
      [dbo].[Users] WITH(NOLOCK)
)
,
report_catalog
AS
(
   SELECT
        c.[ItemID]
      , c.[CreatedById]
      , c.[ModifiedById]
      , c.[Type]
      , c.[Name]
      , c.[Description]
      , c.[Parameter]
      , [ReportCreationDate] = c.[CreationDate]
      , [ReportModifiedDate] = c.[ModifiedDate]
      , [ReportFolder] =
         CASE
            WHEN c.Path = '/' + c.Name THEN ''
            ELSE SUBSTRING(c.[Path], 2, Len(c.[Path])-Len(c.[Name])-2)
         END
      , [ReportPath] = c.[Path]
      , [ReportDefinition] = CONVERT(VARCHAR(MAX),CONVERT(VARBINARY(MAX), c.[content]))
   FROM
      [dbo].[Catalog] AS c WITH (NOLOCK) 
   WHERE 
      1=1
      AND c.[Type] IN(2, 4)
)
SELECT
    c.[ItemID]
   , c.[Name]
   , c.[Description]
   , c.[Type]
   , c.[Parameter]
   , c.[ReportFolder]
   , c.[ReportPath]
   , s.[SubscriptionID]
   , s.[Report_OID]
   , [SubscriptionDescription] = s.[Description]
   , s.[ExtensionSettings]
   , s.[EventType]
   , [RunTime] = CONVERT(VARCHAR(5), s.[LastRunTime], 8)
   , [LastRunDate] = CONVERT(VARCHAR(11), s.[LastRunTime], 13)
   , [LastRunTime] = CAST(CONVERT(CHAR(16), s.[LastRunTime], 113) AS DATETIME)
   , [SubscriptionType] = CASE WHEN CAST(s.[DataSettings] AS NVARCHAR(50)) IS NOT NULL THEN 'Data-Driven' ELSE 'Standard' END
   , s.[DeliveryExtension]
   , s.[MatchData]
   , [SubscriptionLastStatus] = s.[LastStatus]
   , [StatusFail] = CASE WHEN s.[LastStatus] LIKE '%Mail sent%' THEN 'N' ELSE 'Y' END
   , [EmailSubject] = CASE CHARINDEX('<Name>SUBJECT</Name><Value>', s.ExtensionSettings) WHEN 0 THEN '' ELSE SUBSTRING(s.ExtensionSettings, LEN('<Name>SUBJECT</Name><Value>') + CHARINDEX('<Name>SUBJECT</Name><Value>', s.ExtensionSettings), CHARINDEX('</Value>', s.ExtensionSettings, CHARINDEX('<Name>SUBJECT</Name><Value>', s.ExtensionSettings) + 1) - (LEN('<Name>SUBJECT</Name><Value>') + CHARINDEX('<Name>SUBJECT</Name><Value>', s.ExtensionSettings))) END
   , [EmailTo] = SUBSTRING(s.ExtensionSettings, LEN('<Name>TO</Name><Value>') + CHARINDEX('<Name>TO</Name><Value>', s.ExtensionSettings), CHARINDEX('</Value>', s.ExtensionSettings, CHARINDEX('<Name>TO</Name><Value>', s.ExtensionSettings) + 1) - (LEN('<Name>TO</Name><Value>') + CHARINDEX('<Name>TO</Name><Value>', s.ExtensionSettings)))
   , [EmailCc] = CASE CHARINDEX('<Name>CC</Name><Value>', s.ExtensionSettings) WHEN 0 THEN '' ELSE SUBSTRING(s.ExtensionSettings, LEN('<Name>CC</Name><Value>') + CHARINDEX('<Name>CC</Name><Value>', s.ExtensionSettings), CHARINDEX('</Value>', s.ExtensionSettings, CHARINDEX('<Name>CC</Name><Value>', s.ExtensionSettings) + 1) - (LEN('<Name>CC</Name><Value>') + CHARINDEX('<Name>CC</Name><Value>', s.ExtensionSettings))) END
   , [EmailBcc] = CASE CHARINDEX('<Name>BCC</Name><Value>', s.ExtensionSettings) WHEN 0 THEN '' ELSE SUBSTRING(s.ExtensionSettings, LEN('<Name>BCC</Name><Value>') + CHARINDEX('<Name>BCC</Name><Value>', s.ExtensionSettings), CHARINDEX('</Value>', s.ExtensionSettings, CHARINDEX('<Name>BCC</Name><Value>', s.ExtensionSettings) + 1) - (LEN('<Name>BCC</Name><Value>') + CHARINDEX('<Name>BCC</Name><Value>', s.ExtensionSettings))) END
   , [EmailComment] = CASE CHARINDEX('<Name>Comment</Name><Value>', s.ExtensionSettings) WHEN 0 THEN '' ELSE SUBSTRING(s.ExtensionSettings, LEN('<Name>Comment</Name><Value>') + CHARINDEX('<Name>Comment</Name><Value>', s.ExtensionSettings), CHARINDEX('</Value>', s.ExtensionSettings, CHARINDEX('<Name>Comment</Name><Value>', s.ExtensionSettings) + 1) - (LEN('<Name>Comment</Name><Value>') + CHARINDEX('<Name>Comment</Name><Value>', s.ExtensionSettings))) END
   , [EmailIncludeLink] = CASE CHARINDEX('<Name>IncludeLink</Name><Value>', s.ExtensionSettings) WHEN 0 THEN '' ELSE SUBSTRING(s.ExtensionSettings, LEN('<Name>IncludeLink</Name><Value>') + CHARINDEX('<Name>IncludeLink</Name><Value>', s.ExtensionSettings), CHARINDEX('</Value>', s.ExtensionSettings, CHARINDEX('<Name>IncludeLink</Name><Value>', s.ExtensionSettings) + 1) - (LEN('<Name>IncludeLink</Name><Value>') + CHARINDEX('<Name>IncludeLink</Name><Value>', s.ExtensionSettings))) END
   , [EmailRenderFormat] = CASE CHARINDEX('<Name>RenderFormat</Name><Value>', s.ExtensionSettings) WHEN 0 THEN '' ELSE SUBSTRING(s.ExtensionSettings, LEN('<Name>RenderFormat</Name><Value>') + CHARINDEX('<Name>RenderFormat</Name><Value>', s.ExtensionSettings), CHARINDEX('</Value>', s.ExtensionSettings, CHARINDEX('<Name>RenderFormat</Name><Value>', s.ExtensionSettings) + 1) - (LEN('<Name>RenderFormat</Name><Value>') + CHARINDEX('<Name>RenderFormat</Name><Value>', s.ExtensionSettings))) END
   , [EmailPriority] = CASE CHARINDEX('<Name>Priority</Name><Value>', s.ExtensionSettings) WHEN 0 THEN '' ELSE SUBSTRING(s.ExtensionSettings, LEN('<Name>Priority</Name><Value>') + CHARINDEX('<Name>Priority</Name><Value>', s.ExtensionSettings), CHARINDEX('</Value>', s.ExtensionSettings, CHARINDEX('<Name>Priority</Name><Value>', s.ExtensionSettings) + 1) - (LEN('<Name>Priority</Name><Value>') + CHARINDEX('<Name>Priority</Name><Value>', s.ExtensionSettings))) END
   , s.[LastStatus]
   , rs.[ScheduleID]
   , [IsDisabled] = CASE WHEN s.[LastStatus] = 'Disabled' THEN 1 ELSE 0 END 
   , [SubscriptionOwner] = usc.[SimpleUserName]
   , [SubscriptionModifiedBy] = usm.[SimpleUserName]
   , [SubscriptionModifiedDate] = s.[ModifiedDate]
   , [ReportCreatedBy] = urc.[SimpleUserName]
   , c.[ReportCreationDate]
   , [ReportModifiedBy] = urm.[SimpleUserName]
   , c.[ReportModifiedDate]
FROM
   [dbo].[Subscriptions] AS s WITH (NOLOCK) 
   LEFT JOIN report_catalog AS c ON s.[Report_OID] = c.[ItemID]
   LEFT JOIN [dbo].[Notifications] AS n WITH (NOLOCK) ON n.[SubscriptionID] = s.[SubscriptionID] AND s.[Report_OID] = n.[ReportID]
   LEFT JOIN [dbo].[ReportSchedule] AS rs WITH (NOLOCK) ON s.[SubscriptionID] = rs.[SubscriptionID]
   LEFT JOIN report_users AS urc ON c.[CreatedById] = urc.[UserID]
   LEFT JOIN report_users AS urm ON c.[ModifiedById] = urm.[UserID]
   LEFT JOIN report_users AS usc ON s.[OwnerID] = usc.[UserID]
   LEFT JOIN report_users AS usm ON s.[ModifiedByID] = usm.[UserID]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM