【发布时间】:2009-09-01 14:13:14
【问题描述】:
到使用它的 SSRS 报表服务器进程?该名称看起来像一个 guid,但我需要找到使用它的报告服务报告。 非常感谢
【问题讨论】:
标签: sql-server reporting-services
到使用它的 SSRS 报表服务器进程?该名称看起来像一个 guid,但我需要找到使用它的报告服务报告。 非常感谢
【问题讨论】:
标签: sql-server reporting-services
这是不久前的query I blogged about,用于连接:
;WITH cte (job_id, job_name, execution_time, execution_order)
AS
(
SELECT DISTINCT j.job_id
,j.name
,CONVERT(datetime, STUFF(STUFF(run_date,7,0,'/'),5,0,'/')
+ SPACE(1)
+ STUFF(STUFF(RIGHT('000000' + CONVERT(varchar(20), run_time), 6),5,0,':'),3,0,':'))
,ROW_NUMBER() OVER (PARTITION BY j.job_id ORDER BY CONVERT(datetime, STUFF(STUFF(run_date,7,0,'/'),5,0,'/')
+ SPACE(1)
+ STUFF(STUFF(RIGHT('000000' + CONVERT(varchar(20), run_time), 6),5,0,':'),3,0,':')) DESC)
FROM msdb.dbo.sysjobs j
INNER JOIN msdb.dbo.syscategories c ON j.category_id = c.category_id
LEFT OUTER JOIN msdb.dbo.sysjobhistory jh ON j.job_id = jh.job_id
WHERE c.name ='Report Server'
)
SELECT
x.job_name
,c.name
,x.execution_time
,c.path
,su.description
,CONVERT(varchar(max), su.ExtensionSettings) as ExtensionSettings
,'EXEC msdb..sp_start_job ''' + x.job_name + '''' as SQLStatement
FROM cte x
INNER JOIN dbo.Schedule sc ON x.job_name = CONVERT(varchar(100), sc.ScheduleID)
INNER JOIN dbo.ReportSchedule rs ON sc.ScheduleID = rs.ScheduleID
INNER JOIN dbo.Subscriptions su ON rs.SubscriptionID = su.SubscriptionID
INNER JOIN dbo.Catalog c ON su.Report_OID = c.ItemID
WHERE execution_order = 1
ORDER BY 3, 2
【讨论】:
似乎没有一种直接的方法可以找出答案。
以下查询列出了订阅 ID 和它们链接到的报告
select s.SubscriptionID, c.Path
from ReportServer.dbo.Subscriptions as s
JOIN ReportServer.dbo.Catalog as c
on ItemID = Report_OID
然后在作业步骤中引用订阅 ID,格式如下。
exec ReportServer.dbo.AddEvent @EventType='TimedSubscription', @EventData='~subscriptionID~'
应该可以编写一个查询将它们连接在一起,但我现在没有时间。我稍后会尝试更新问题。
【讨论】: