Geo*_*ald 7 sql-server reporting-services sql-server-2016
在我的报表服务器数据库上,所有用户的报表订阅都保存为 SQL 代理作业,这是正常情况。
如果我连接到报表服务器数据库并列出 SQL 代理作业,我会看到一个以随机字符串命名的巨大作业列表,例如:
000D5787-8802-4CB1-9784-8897C596003F
通过反复试验的过程,我发现特定的代理作业与我的“每日销售”报告相关,并且我能够查看作业历史记录,将 SQL 命令添加到订阅运行的代码中,等等。
但是,我有数百份用户报告。我需要能够以某种方式将报告的名称与 SQL 代理作业的名称联系起来。要么让报表服务器更有效地命名其订阅作业,要么通过使用某种查找表,当我向下滚动作业列表时可以参考该表格。
有任何想法吗?我尝试查看 ReportServer 的“订阅”表,它确实有一些看起来相似的 ID 号,但它们都不与作业名称匹配。
运行以下代码..它应该为您提供具有订阅的所有报告的列表以及作业名称:
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)
| 归档时间: |
|
| 查看次数: |
9726 次 |
| 最近记录: |