【发布时间】:2019-09-05 16:19:00
【问题描述】:
我们有一位用户正在接收来自 SSRS 的报告,但未在订阅字段中列出(查找报告 > 管理 > 订阅)。当我直接查询报表服务器时,我看到它们列在 CC 字段中。以下是我发现的在 CC 字段中显示用户的代码。
DECLARE
@email VARCHAR(250) = 'user@company.com'
SELECT
cat.[Path],
cat.[Name],
CASE WHEN sub.Description LIKE '%@%' THEN 0 ELSE 1 END AS DDS,
CASE WHEN sub.Description LIKE '%@%' THEN '' ELSE sub.Description END AS DDSDescription,
sub.SubscriptionID,
sub.ExtensionSettings
FROM [ReportServer].[dbo].[Catalog] AS cat
INNER JOIN [ReportServer].[dbo].[Subscriptions] AS sub ON cat.ItemID = sub.Report_OID
WHERE sub.extensionSettings LIKE '%' + @Email + '%'
ORDER BY cat.[Path], cat.[Name]
我们已删除并重新创建了此报告的订阅,但他们仍在接收报告。我已确认该用户不属于任何接收报告的组,并且没有启用指向其电子邮件的转发。我无法通过谷歌找到任何东西,因为我返回的大多数内容都是关于未收到有效订阅或启用转发的用户。
我继承了这些报告,但我不是超级精通 SQL。电子邮件是否有可能被硬编码到报告中,或者是否有其他位置包含我可以查看的订阅信息?
【问题讨论】:
-
删除订阅后,运行报告的 SQL 代理作业是否被删除?订阅会在预定时创建 SQL 代理作业。查看用户获取报告的时间,然后在 SQL 代理作业活动监视器的
Last Run列中缩小范围。 SSRS 订阅创建的 SQL 代理作业的名称类似于 GUID。 (06A25D77-AE14-4EEF-9E00-D1F13367F3DE) -
@WEI_DBA,我可以检查一下。它正在使用和之前使用的订阅是共享订阅。我将删除共享并创建一个唯一的订阅并检查它,以便有一个唯一的作业名称。
标签: sql sql-server reporting-services subscription