Как я могу связать имя задания сервера SQL - PullRequest
0 голосов
/ 01 сентября 2009

процессу сервера отчетов SSRS, который его использует? имя выглядит как guid, но мне нужно найти отчеты служб отчетов, которые его используют. большое спасибо

Ответы [ 2 ]

3 голосов
/ 02 сентября 2009

Вот запрос , о котором я писал в блоге некоторое время назад, который выполняет объединение:

;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
0 голосов
/ 01 сентября 2009

Кажется, нет простого способа выяснить это.

В следующем запросе перечислены идентификаторы подписки и отчеты, на которые они ссылаются

select s.SubscriptionID, c.Path
from ReportServer.dbo.Subscriptions as s
JOIN ReportServer.dbo.Catalog       as c
on   ItemID = Report_OID

Идентификатор подписки затем указывается в шаге задания в следующем формате.

exec ReportServer.dbo.AddEvent @EventType='TimedSubscription', @EventData='~subscriptionID~'

Должна быть возможность написать запрос, чтобы объединить все это вместе, но сейчас у меня нет времени. Я постараюсь обновить вопрос позже.

...