2014-04-30 33 views
0

我想从我所有的SSRS报告中提取sql,所以我可以看到使用了哪些数据库表和columsn。有没有人知道如何做到这一点,如果你有50个报告?是否有任何我曾忽略的现有功能?从SSRS报告中提取sql

+0

如果您尝试以编程方式提取所有查询,答案是没有任何这样的功能。如果您的意思是在不打开Visual Studio的情况下从.rdl文件提取查询,则可以使用文本编辑器打开所有文件。 – mordack550

+0

刚发现这个。 http://bretstateham.com/extracting-ssrs-content-using-the-ssis-%E2%80%9Cexport-column%E2%80%9D-component/ –

+0

所有SSRS报告是否在2008年和2012年ReportServer数据库中列出? –

回答

2

RDL文件是简单的XML文件。你可以创建一个简单的解析器来提取你想要的信息。如果您现在无法访问RDL文件,则可以通过SSRS Web界面下载它们。

下面是一个RDL文件的相关部分的摘录:

<DataSets> 
<DataSet Name="Test"> 
    <Fields> 
    <Field Name="Testfield"> 
     <DataField>Testfield</DataField> 
     <rd:TypeName>System.DateTime</rd:TypeName> 
    </Field> 
    </Fields> 
    <Query> 
    <DataSourceName>MyDataSource</DataSourceName> 
    <CommandType>StoredProcedure</CommandType> 
    <CommandText>spMyGreatStoredProcedure</CommandText> 
    <QueryParameters> 
     <QueryParameter Name="@param1"> 
     <Value>=Parameters!Param1.Value</Value> 
     </QueryParameter> 
     <QueryParameter Name="@param2"> 
     <Value>=Parameters!Param2.Value</Value> 
     </QueryParameter> 
    <rd:UseGenericDesigner>true</rd:UseGenericDesigner> 
    </Query> 
</DataSet> 
</DataSets> 

有一个或多个DataSet块,它定义了报告中的一个数据集。首先,定义所有字段,然后使用其参数进行查询。