반응형

SSRS 보고서에 사용된 쿼리문 확인(테이블, 컬럼, 프로시저 찾기)

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016

 

SSRS 보고서에서 사용되고 있는 쿼리문을 확인하여 테이블, 컬럼 및 프로시저를 확인하는 방법에 대해서 살펴본다. 이 정보는 리포트 데이터베이스의 Catalog 정보를 XML로 변환 및 파싱하여 정보를 추출 할 수 있다.

 

리포트 데이터베이스에서 Catalog 테이블을 조회하면 다음과 같은 컬럼 정보가 나타난다.

 

 

Content 컬럼을 VARBINAMRY형식으로 가져와서 XML로 변경한다.

SELECT

    C.Name,c.Path,CONVERT(XML,CONVERT(VARBINARY(MAX),C.Content)) AS reportXML,C.Content

FROM ReportServer.dbo.Catalog as C

WHERE C.Content is not null AND C.Type = 2

 

 

ReportXML 컬럼을 클릭하면 XML형태의 보고서를 보여준다.

 

 

다음 스크립트를 실행하여 XML로 변환된 정보를 파싱하여 리포트명과 리포트 위치, DataSetName, DataSourceName, 쿼리문을 확인할 수 있다.

SELECT

    CATDATA.Name AS ReportName

    ,CATDATA.Path AS ReportPathLocation

    ,xmlcolumn.value('(@Name)[1]', 'VARCHAR(250)') AS DataSetName

    ,xmlcolumn.value('(Query/DataSourceName)[1]','VARCHAR(250)') AS DataSoureName

    ,xmlcolumn.value('(Query/CommandText)[1]','VARCHAR(2500)') AS CommandText

FROM (

        SELECT

            C.Name, c.Path, CONVERT(XML,CONVERT(VARBINARY(MAX),C.Content)) AS reportXML    

        FROM ReportServer.dbo.Catalog as C

        WHERE C.Content is not null AND C.Type = 2

    ) as CATDATA

     CROSS APPLY reportXML.nodes('/Report/DataSets/DataSet') as xmltable (xmlcolumn)

WHERE xmlcolumn.value('(Query/CommandText)[1]','VARCHAR(250)') LIKE '%ProductCategoryName%'

ORDER BY CATDATA.Name

 

 

 

[참고자료]

https://www.mssqltips.com/sqlservertip/3693/find-tables-columns-or-stored-procedures-used-in-a-sql-server-reporting-services-report/

 

 

2015-08-11 / 강성욱 / http://sqlmvp.kr

 

 

SSRS, SQL Server Reporting Services, 리포팅 서비스, SQL 보고서 서비스, SSRS 쿼리 찾기, 보고서 쿼리 찾기

반응형

+ Recent posts