查找和更改 Report Manager 报告订阅的电子邮件地址

Locate & Alter Email Addresses for a Report Manager Report Subscription

我是一名全新的初级 SQL 开发人员。我继承了几个报告,这些报告在报告管理器上。其中一些似乎设置了订阅,但它们包含无效的电子邮件地址。

我知道我可以通过报告管理器一次修改这些报告中的每一个及其订阅,方法是单击报告,转到“管理”、“订阅”等;然而,这似乎是对时间和精力的巨大浪费,而且它并没有为未来提供一个非常可靠的解决方案。

我宁愿把时间花在更有意义的事情上。有什么方法可以从 SSMS 访问我的所有 Report Manager 报告订阅吗?我希望能够看到他们现在被硬编码到哪些电子邮件地址,然后从我们的 HR 数据库中的员工电子邮件列表中将其修改为 select。这样,如果以后电子邮件发生变化,或者如果我们想从所有订阅中删除一个人,则不会花费大量时间。

另外,有谁知道如何避免似乎与 Report Manager 一起出现的荒谬的作业命名约定?我不知道报告“3AC1BB6F-D782-46DD-99F5-CCA1E6257091”与什么相关联,但如果可以将其修改为默认为 "ReportName+Microsoft'sTypicalBSNamingCovention" 之类的内容,那会很好并且会有些意义。

我希望这是有道理的。预先感谢大家与我分享您的经验和知识。 :^)

这是一个允许您查看订阅的查询,前提是您当然知道报表服务器数据库的位置。

SELECT A.SubscriptionID, A.Report_OID, B.Name, 
Path, A.LastRunTime, A.Description, C.UserName AS Owner, A.LastStatus, A.ExtensionSettings
FROM Subscriptions A INNER JOIN Catalog B
ON A.Report_OID = B.ItemID
INNER JOIN Users C
ON A.OwnerID = C.UserID
WHERE A.ExtensionSettings LIKE '%name@domain.com%' -- this can be more than an email, like a paramater value
ORDER BY A.LastRunTime DESC

这是一个可用于更新订阅的查询。

UPDATE Subscriptions SET
ExtensionSettings = REPLACE(CAST(ExtensionSettings AS nvarchar(max)), 'name', 'new_name')
WHERE ExtensionSettings LIKE '%name@domain.com%'

谨慎使用更新,否则您最终可能会手动重建订阅。

不要弄乱 Report Manager 创建的订阅作业。如果您需要为特定订阅查找工作,只需尝试确保每个订阅都有一个独特的时间表。按最后 运行 日期对作业列表进行排序,以查找上次触发订阅的时间。右键单击 运行。无论如何,这对我来说已经足够好了。