繁体   English   中英

SQL Server - SSRS - 在哪里可以找到生成报告的查询

[英]SQL Server - SSRS - Where to find query generating the report

使用 SSRS 创建所有报告的人已经离开,我正在尝试对正在生成的报告之一进行故障排除。 我如何获得查看生成报告的查询的权限。

这将给出带有 xml 报告定义的报告列表:

SELECT Name,
CAST(CAST(Content AS VARBINARY(MAX)) AS XML) AS ReportXML
FROM ReportServer.dbo.Catalog
where Type = 2
order by Name

您想要的信息位于 DataSets 部分,示例如下。 报告中可能有多个查询/存储过程。

<DataSets>
    <DataSet Name="SalesSummary">
        <Query>
            <CommandType>StoredProcedure</CommandType>
            <CommandText>rptSalesSummary</CommandText>
            <QueryParameters>
                <QueryParameter Name="@STARTDATE">
                    <Value>=Parameters!STARTDATE.Value</Value>
                </QueryParameter>
                <QueryParameter Name="@ENDDATE">
                    <Value>=Parameters!ENDDATE.Value</Value>
                </QueryParameter>
            </QueryParameters>
            <DataSourceName>SampleDB</DataSourceName>
        </Query>
        .
        .
        .
   </DataSet>
    <DataSet Name="CompanyLocation">
        <Query>
            <DataSourceName>SampleDB</DataSourceName>
            <CommandText>
                SELECT CompanyLocationID AS ID, Name 
                                    FROM tblCompanyLocation
                WHERE WareHouseOnlyInd = 0
                ORDER BY Description
            </CommandText>
            <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
        </Query>
    </DataSet>
    .
    .
    .

请参阅http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition/ReportDefinition.xsd

作为 jim31415,他说它作为 XML 存储在 Catalog 表中的数据。 您可以使用游标查询此数据并从每个 XML 中选择数据:

DECLARE @details AS TABLE
    (
        id INT IDENTITY(1,1) NOT NULL,
        Report              NVARCHAR(100), 
        ReportPath          NVARCHAR(500),
        DataSetName         NVARCHAR(50), 
        DataSourceName      NVARCHAR(100), 
        ComandType          NVARCHAR(50), 
        CommandText         NVARCHAR(MAX)
    )

DECLARE @report xml
DECLARE @reportname NVARCHAR(100), @reportpath NVARCHAR(500)
DECLARE @query NVARCHAR(MAX)
DECLARE db_cursor CURSOR FOR 
        SELECT Name, Path ,CAST(cast(Content AS varbinary(max)) as XML)
        FROM Catalog
        WHERE Type = 2
        ORDER BY Name
OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @reportname, @reportpath, @report
WHILE @@FETCH_STATUS = 0
    BEGIN
        INSERT INTO @details
        SELECT 
            @reportname AS Report,
            @reportpath,
            t.c.value('@Name[1]', 'nvarchar(50)') AS DataSetName, 
            t.c.value('(./*:Query/*:DataSourceName)[1]', 'nvarchar(50)') AS DataSourceName, 
            t.c.value('(./*:Query/*:CommandType)[1]', 'nvarchar(100)') AS CommandType, 
            ISNULL(t.c.value('(./*:Query/*:CommandText)[1]', 'nvarchar(MAX)'), 'Shared - ' + t.c.value('(./*:SharedDataSet/*:SharedDataSetReference)[1]', 'nvarchar(MAX)'))  AS CommandText
        FROM 
            @report.nodes('/*:Report/*:DataSets/*:DataSet') AS t(c)
        FETCH NEXT FROM db_cursor INTO @reportname, @reportpath, @report
    END
CLOSE db_cursor
DEALLOCATE db_cursor


SELECT * FROM @details ORDER BY Report, DataSetName

在报告中单击。

在工具栏中选择“查看”。

选择“报告数据”或 CTL+ALT+D

在报告数据面板中,您应该会看到数据集。

右键单击数据集,然后选择“查询”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM