如何将报表服务器订阅 SQL 代理作业名称链接到其正在运行的报表的名称

Geo*_*ald 7 sql-server reporting-services sql-server-2016

在我的报表服务器数据库上,所有用户的报表订阅都保存为 SQL 代理作业,这是正常情况。

如果我连接到报表服务器数据库并列出 SQL 代理作业,我会看到一个以随机字符串命名的巨大作业列表,例如:

000D5787-8802-4CB1-9784-8897C596003F

通过反复试验的过程,我发现特定的代理作业与我的“每日销售”报告相关,并且我能够查看作业历史记录,将 SQL 命令添加到订阅运行的代码中,等等。

但是,我有数百份用户报告。我需要能够以某种方式将报告的名称与 SQL 代理作业的名称联系起来。要么让报表服务器更有效地命名其订阅作业,要么通过使用某种查找表,当我向下滚动作业列表时可以参考该表格。

有任何想法吗?我尝试查看 ReportServer 的“订阅”表,它确实有一些看起来相似的 ID 号,但它们都不与作业名称匹配。

Har*_*rry 8

运行以下代码..它应该为您提供具有订阅的所有报告的列表以及作业名称:

SELECT distinct
sj.[name] AS [Job Name],
rs.SubscriptionID,
c.[Name] AS [Report Name],
c.[Path]


FROM msdb..sysjobs AS sj 

INNER JOIN ReportServer..ReportSchedule AS rs
ON sj.[name] = CAST(rs.ScheduleID AS NVARCHAR(128)) 

INNER JOIN ReportServer..Subscriptions AS su
ON rs.SubscriptionID = su.SubscriptionID

INNER JOIN ReportServer..[Catalog] c
ON su.Report_OID = c.ItemID
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过运行以下命令来触发作业:

USE [msdb]
EXEC sp_start_job @job_name = '[Job Name] from above query'
Run Code Online (Sandbox Code Playgroud)