Dav*_*ein 8 t-sql sql-server-2008 ssrs-2008
有没有一种简单的方法来查看SSRS实际生成的SQL查询,而不是运行配置文件跟踪来捕获它们?
在BIDS编辑器中有什么方法可以看到这个吗?
小智 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
Run Code Online (Sandbox Code Playgroud)
简而言之,不。没有好的解决方法。但是,为了进行开发,我通常会在 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
Run Code Online (Sandbox Code Playgroud)
这使我能够使用下拉参数列表中的真实文本值并简单地粘贴到我的查询中。然后我可以在 Management Studio 中优化查询,然后当我对结果感到满意时将其粘贴回 BIDS 中。