查看SSRS报告生成的SQL查询的简单方法?

时间:2010-08-09 14:36:48

标签: tsql sql-server-2008 ssrs-2008

是否有一种简单的方法可以查看SSRS实际生成的SQL查询,而不是运行配置文件跟踪来捕获它们?

BIDS编辑器中是否有某种方法可以看到这个?

4 个答案:

答案 0 :(得分:7)

您可以针对SSRS报表服务器运行类似下面的内容。您将能够看到报告数据集正在执行的sql。

;WITH XMLNAMESPACES (
    DEFAULT 'http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition',
    'http://schemas.microsoft.com/SQLServer/reporting/reportdesigner' AS rd
),
ReportData AS
(
    SELECT name ReportName
           , x.value('CommandType[1]', 'VARCHAR(50)') AS CommandType
           , x.value('CommandText[1]','VARCHAR(8000)') AS CommandText
           , x.value('DataSourceName[1]','VARCHAR(50)') AS DataSource
    FROM (SELECT  name
                  , CAST(CAST(content AS VARBINARY(MAX)) AS XML) AS reportXML
            FROM  ReportServer.dbo.Catalog
            WHERE content IS NOT NULL
                  AND type != 3) a
                  CROSS APPLY reportXML.nodes('/Report/DataSets/DataSet/Query') r(x)
)

SELECT *
FROM ReportData

答案 1 :(得分:4)

简而言之,没有。没有好的解决方法。但是,对于开发,我通常在SSRS的工作中创建一个测试查询。我会在Management Studio中编辑它,然后将值粘贴回BIDS。假设有两个名为“StudentID”和“TeacherID”的参数,查询看起来像:

DECLARE @StudentID int
DECLARE @TeacherID int

SELECT @StudentID = StudentID FROM Students WHERE StudentName LIKE 'John Doe'
SELECT @TeacherID = TeacherID FROM Teachers WHERE TeacherName LIKE 'Mr. Jones'

-- PASTE IN QUERY FROM BIDS BELOW

这允许我使用下拉参数列表中的真实文本值,只需粘贴我的查询即可。然后,我可以在Management Studio中优化查询,然后在对结果感到满意时将其粘贴回BIDS。

答案 2 :(得分:3)

我通常在运行报告时运行SQL事件探查器,并使用参数从中提取查询。

答案 3 :(得分:0)

关闭文件,将扩展名从.rdlc更改为.rdl并重新打开。它应显示为HTML。现在搜索“选择”,然后你就去了!