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

标签 sql-server reporting-services sql-server-2016

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

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

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

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

但是,我有数百个用户报告。我需要能够以某种方式将报告的名称与 SQL 代理作业的名称联系起来。要么通过让 Report Server 更有效地命名其订阅作业,要么通过某种查找表,当我向下滚 Action 业列表时可以引用。

有任何想法吗?我试过查看 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

然后,您可以通过运行以下命令来触发作业:
USE [msdb]
EXEC sp_start_job @job_name = '[Job Name] from above query'

关于sql-server - 如何将报表服务器订阅 SQL 代理作业名称链接到它正在运行的报表的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57629730/

相关文章:

c# - ReportViewer 控件不显示报告

sql-server - 有效更新 980K 记录,其中行在组中具有最大值

SQL:来自 2 个非连接表的单选查询

sql-server - SQL服务器数据库

c# - Get Entity Framework 6 在其下方的 SELECT 语句中使用 NOLOCK

c# - 具有特殊 F801 字符的 SQL Server nchar 和 .Net unicode

asp.net - 参数未传递到 ssrs ServerReport - 使用 ServerReport.Render 将报告渲染为 pdf

reporting-services - 即使未设置默认值,SSRS 参数也默认为 NULL(全部)

sql-server - 两个 SQL Server 层/表的空间相交

sql-server - 部署后,SSIS脚本组件不起作用。关于ComponentVersionMismatchError的投诉