SSMS / SSRS - получение имени хранимой процедуры, используемой набором данных SSRS из запроса - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть запрос (незаконченный), который получает общую информацию SysJob / ReportServer.Единственная проблема, с которой я столкнулся - это попытка получить имя хранимой процедуры, используемой в отчете SSRS.Я пробовал несколько запросов, но в своей текущей попытке я попытался получить имя процедуры из столбца sysjobsteps.command, к сожалению, он содержит только столбец Subscriptions.SubscriptionID, который при отслеживании этой таблицы также ни к чему меня не приводит ... Есть идеи?Спасибо!

SELECT JOBS.Name AS [JobName(ID)]
    , CAT.Name AS [CatName] 
    , SCH.SubscriptionID,
    , SUB.LastRunTime
    , STEPS.command -- @eventData = ReportSchedule.SubscriptionID
FROM msdb.dbo.sysjobs JOBS
    INNER JOIN msdb.dbo.sysjobsteps STEPS ON JOBS.job_id = STEPS.job_id
    INNER JOIN ReportServer.dbo.ReportSchedule SCH ON JOBS.name = CAST(SCH.ScheduleID AS sysname)
    INNER JOIN ReportServer.dbo.Subscriptions SUB ON SCH.SubscriptionID = SUB.SubscriptionID
    INNER JOIN ReportServer.dbo.Catalog CAT ON SUB.Report_OID = CAT.ItemID
WHERE JOBS.enabled = 1
ORDER BY CAT.Name

Пример данных в столбце "sysjobsteps.command":

exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', @EventData='f3296cc8-79e1-4a99-9723-c1880da25a8d'

РЕШЕНИЕ (грязно, но работает):

SELECT REPLACE(LEFT(SUBSTRING(CAST(CONVERT(xml, CONVERT(varbinary(max), CAT.content)) AS VARCHAR(MAX)),
    CHARINDEX('<CommandText>', CAST(CONVERT(xml, CONVERT(varbinary(max), CAT.content)) AS VARCHAR(MAX))), 150),
    CHARINDEX('</CommandText>', SUBSTRING(CAST(CONVERT(xml, CONVERT(varbinary(max), CAT.content)) AS VARCHAR(MAX)),
    CHARINDEX('<CommandText>', CAST(CONVERT(xml, CONVERT(varbinary(max), CAT.content)) AS VARCHAR(MAX))), 150)) - 1),
    '<CommandText>', '') AS ProcName
FROM ReportServer.dbo.Catalog

1 Ответ

0 голосов
/ 26 декабря 2018

Взгляните на: Запрос для поиска списка * всех * наборов данных SSRS по * всем * отчетам SSRS по экземпляру ReportServer

Один из его ответов имеет довольно большой и хорошо документированныйпример получения общих и встроенных наборов данных.

...