0

特定のテーブルがレポート サーバー上のレポートで使用されているかどうかを確認する方法はありますか?

4

2 に答える 2

2
USE ReportServer

DECLARE @TEXTTOSEARCH AS VARCHAR(200)
SET @TEXTTOSEARCH = 'urtableorview'

;WITH XMLNAMESPACES 
(DEFAULT 'http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition',
'http://schemas.microsoft.com/SQLServer/reporting/reportdesigner' AS rd)

SELECT name
    , x.value('CommandType[1]', 'VARCHAR(100)') AS CommandType
    , x.value('CommandText[1]','VARCHAR(MAX)') AS CommandText
    , x.value('DataSourceName[1]','VARCHAR(150)') AS DataSource
FROM (SELECT name, 
    CAST(CAST(content AS VARBINARY(MAX)) AS XML) AS reportXML 
    FROM Catalog 
    WHERE content IS NOT NULL AND type != 3) AS a
CROSS APPLY reportXML.nodes('/Report/DataSets/DataSet/Query') r(x)
WHERE x.value('CommandType[1]', 'VARCHAR(50)') IS NULL
    AND x.value('CommandText[1]','VARCHAR(MAX)') LIKE '%' + @TEXTTOSEARCH + '%'
ORDER BY name
于 2012-10-02T13:47:56.893 に答える
2

Ajit Kumar Thakur https://blogs.technet.microsoft.com/dbtechresource/2015/04/04/retrieve-ssrs-report-server-database-information/による Technet の記事で、これと似ているがより単純なクエリを見つけました。

WITH Reports AS 
(   
  SELECT *
    , CONVERT( VARCHAR(MAX), CONVERT(VARBINARY(MAX), Content)) AS ReportContent
  FROM Catalog
)
SELECT Name, [Path] 
FROM Reports
WHERE ReportContent LIKE '%tablename%';

これは、レポート内のテーブル、プロシージャ、または関数の依存関係を特定する必要がある場合に非常に便利です。各レポートの XML コンテンツを抽出し、それを varchar に変換してから、指定されたオブジェクト [name] を検索します。テーブルには、レポート サーバー内のすべての RDL ファイルの XML コンテンツが含まれています。

于 2016-09-22T14:51:11.100 に答える