Я имею дело с конкретной проблемой идентификации зависимых объектов БД для любого SSRS RDL.
Я хорошо понимаю, если какой-либо набор данных имеет хранимую процедуру в качестве запроса в RDL, тогда я могу ссылаться на связанную хранимую процедуру и получать все зависимые объекты (подробности можно найти здесь: Различные способы поиска SQL Зависимости объекта сервера )
Но я специально ищу наборы данных с текстовым или встроенным запросом для любого rdl. Я могу извлечь CommandText из XML-кода rdl, но я не уверен, как извлечь объекты db, такие как sp, table, views столбцы образуют текст команды, который является встроенным запросом в rdl.
Например, если я извлеку приведенный ниже запрос из XML commandText (это гипотетический запрос, имена не стандартизированы в базе данных, например vw_ для представлений, udf_ для функций):
-----This query serves Report ABC
SELECT DATE
,[amount]
,teamID = (SELECT TeamID FROM Sales.[getSalesPerson](r.date) as s WHERE R.[SalesPersonName] = S.[SalesPersonName])
,[channel]
,[product]
,[Item]
,r.[M_ID]
,Amount
,M.[Type]
FROM dbo.FactTable AS R
LEFT JOIN sp_Channel C ON R.[Channel_ID] = C.[Channel_ID]
LEFT JOIN Marketing.vw_M M ON R.[M_ID] = M.[M_ID]
Есть ли способ определить, что этот запрос имеет зависимый объект, как показано ниже:
ObjectName ObjectType
------------------------------------------
dbo.FactTable Table
sp_Channel Stored Procedure
Marketing.vw_M View
Sales.[getSalesPerson] Function