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 |
[참고자료]
2015-08-11 / 강성욱 / http://sqlmvp.kr
SSRS, SQL Server Reporting Services, 리포팅 서비스, SQL 보고서 서비스, SSRS 쿼리 찾기, 보고서 쿼리 찾기
'SQL Server > SSRS 강좌' 카테고리의 다른 글
SSRS에서 E-mail 세팅시 SSL 사용 유무 수정하기 (1) | 2019.03.25 |
---|---|
SSRS 2016 향상된 구독(Subscription) 기능 (0) | 2015.11.04 |
SSRS Range Chart 만들기 (0) | 2015.07.16 |
HTTP 엔드포인트 생성 오류 – 액세스 거부 (0) | 2015.07.16 |
클러스터 환경에서 새로운 서버로 리포팅 서비스 이동하기 (0) | 2015.07.16 |