2015-05-19 44 views
-1

我有一种情况,我无法更新SSRS报告,但我有权更新与该报告相关联的存储过程。更新存储过程后,我想如果某些报告使用相同的存储过程会怎么样..我试图找到存储过程的依赖项,但无法找到SSRS报告的数量取决于该存储过程..所以 只是想知道有没有什么办法可以找到SSRS报告取决于一个存储过程?存储proc的依赖关系

感谢, sree.k

回答

0

如果您不能搜索特定的SP项目/解决方案(视觉工作室?), 如果你有(读)访问Report Server数据库您可以只运行一个脚本搜索你的SP。

对于查询的内容 - 感谢http://bretstateham.com/extracting-ssrs-report-rdl-xml-from-the-reportserver-database/,那么它只是在返回的xml中搜索字符串。 (您正在搜索的字符串是最后一行

--The first CTE gets the content as a varbinary(max) 
--as well as the other important columns for all reports, 
--data sources and shared datasets. 
WITH ItemContentBinaries AS 
(
    SELECT 
    ItemID,Name,[Type] 
    ,CASE Type 
    WHEN 2 THEN 'Report' 
     WHEN 5 THEN 'Data Source' 
     WHEN 7 THEN 'Report Part' 
     WHEN 8 THEN 'Shared Dataset' 
     ELSE 'Other' 
    END AS TypeDescription 
    ,CONVERT(varbinary(max),Content) AS Content 
    ,Path 
    FROM ReportServer.dbo.Catalog 
    WHERE Type IN (2,5,7,8) 
), 
--The second CTE strips off the BOM if it exists... 
ItemContentNoBOM AS 
(
    SELECT 
    ItemID,Name,[Type],TypeDescription 
    ,CASE 
     WHEN LEFT(Content,3) = 0xEFBBBF 
     THEN CONVERT(varbinary(max),SUBSTRING(Content,4,LEN(Content))) 
     ELSE 
     Content 
    END AS Content 
    ,path 
    FROM ItemContentBinaries 
) 
--The outer query gets the content in its varbinary, varchar and xml representations... 
SELECT * FROM (
SELECT 
    ItemID,Path,Name,[Type],TypeDescription 
    ,Content --varbinary 
    ,CONVERT(varchar(max),Content) AS ContentVarchar --varchar 
    ,CONVERT(xml,Content) AS ContentXML --xml 
FROM ItemContentNoBOM 
)_x 
WHERE charindex('dbo.ReportProcToSearchFor',cast([_x].ContentXML as nvarchar(max))) > 0