是否有一种简单的方法可以查看SSRS实际生成的SQL查询,而不是运行配置文件跟踪来捕获它们?
BIDS编辑器中是否有某种方法可以看到这个?
答案 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。现在搜索“选择”,然后你就去了!