65.9K
CodeProject 正在变化。 阅读更多。
Home

实现数据处理扩展

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.65/5 (9投票s)

2008年1月16日

CPOL

4分钟阅读

viewsIcon

83550

downloadIcon

2659

本文将介绍如何在 SQL Server Reporting Server 2005 上部署自定义数据处理扩展,以及如何在开发环境中进行使用。

Custom Data Source Extension

引言

本文将介绍如何在 SQL Server Reporting Server 2005 上部署自定义数据处理扩展,以及如何在开发环境中进行使用。

背景

我使用并编写 SQL Server Reporting Services 报表已有一段时间,现在是时候编写我自己的报表安全实现。为了做到这一点,我需要了解如何更改 Reporting Services 中的数据源。

我在 Microsoft TechNet 上找到了一些资源信息:实现数据处理扩展。我发现这篇文章很有用,但也不容易理解,因此我写了这篇 CodeProject 文章,帮助您尽快上手。

必备组件

  • 我假设您熟悉 SQL Reporting Services,了解它们是什么、如何设计以及如何安装。有关此主题的更多信息,请单击此处
  • 您应该已经安装了 SQL Reporting Services 2005。
  • 安装了 SQL Server Reporting Services 报表模板的 Visual Studio 2005。

编译自定义数据源扩展

加载源代码后,您需要引用“Reporting Services Interfaces”。在我的情况下,它位于:C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.ReportingServices.Interfaces.dll;但是,这可能因您的安装而异。

一旦您进行了引用,就应该能够编译应用程序。

自定义数据源的安装

下载上面的自定义数据处理扩展源代码后,必须安装它才能启用访问。安装过程分两步进行:

  • 安装和配置扩展。
  • 配置扩展安全。

此特定扩展既被 Reporting Server 使用,也在 Visual Studio 2005 报表设计器中使用;两者都有不同的配置位置,无论是在服务器上还是在您的开发环境中。但是,这两种配置都非常相似。

开发环境安装

为了在开发环境中看到自定义数据源,需要更改两个配置文件。这些文件通常位于 C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies;这些文件是:

  • RSReportDesigner.config
  • RSPreviewPolicy.config

复制您的程序集

首先,您需要将自定义数据源文件复制到“PrivateAssemblies”文件夹,因为它们在这里被引用。

设置配置文件

RSReportDesigner.config 包含对扩展的引用。需要在 <Extension> 标签内的 <Data> 标签中添加以下内容:

<Extension Name="CUSTOM_DATASOURCE" 
   Type="DataSourceExtension.DataSetConnection, DataSourceExtension" />

为了让设计器使用自定义数据源,您需要在 <Data> 标签下方(通常位于其正下方)的 <Designer> 标签中添加以下内容:

<Extension Name="CUSTOM_DATASOURCE" _
 Type="Microsoft.ReportingServices.QueryDesigners.GenericQueryDesigner,
       Microsoft.ReportingServices.QueryDesigners"/>

您会注意到,这次我们指向了标准的 Microsoft Generic Query Designer。这是因为我们正在构建一个自定义数据源扩展,而不是一个查询设计器。

最终,您的 RSReportDesigner.config 文件应该看起来像这样:

<Configuration> 
    <Add Key="SecureConnectionLevel" Value="0" /> 
    <Add Key="InstanceName" Value="Microsoft.ReportingServices.PreviewServer" /> 
    <Add Key="SessionCookies" Value="true" /> <Add Key="SessionTimeoutMinutes" Value="3" /> 
    <Add Key="PolicyLevel" Value="rspreviewpolicy.config" /> 
    <Add Key="CacheDataForPreview" Value="true" /> 
    <Extensions> 
        <Render> 
            <Extension Name="XML" Type="Microsoft.ReportingServices.Rendering.
                                        XmlDataRenderer.XmlDataReport,
                                        Microsoft.ReportingServices.XmlRendering" /> 
            <Extension Name="CSV" Type="Microsoft.ReportingServices.Rendering.
                                        CsvRenderer.CsvReport,Microsoft.
                                        ReportingServices.CsvRendering" /> 
            <Extension Name="IMAGE" Type="Microsoft.ReportingServices.Rendering.
                                          ImageRenderer.ImageReport,
                                          Microsoft.ReportingServices.ImageRendering" /> 
            <Extension Name="RGDI" Type="Microsoft.ReportingServices.Rendering.
                                         ImageRenderer.RemoteGdiReport,
                                         Microsoft.ReportingServices.ImageRendering" 
                                         Visible="false" /> 
            <Extension Name="PDF" Type="Microsoft.ReportingServices.Rendering.
                                        ImageRenderer.PdfReport,Microsoft.ReportingServices.
                                        ImageRendering" /> 
            <Extension Name="HTML4.0" Type="Microsoft.ReportingServices.Rendering.
                                            HtmlRenderer.Html40RenderingExtension,
                                            Microsoft.ReportingServices.HtmlRendering" 
                                            Visible="false" /> 
            <Extension Name="HTML3.2" Type="Microsoft.ReportingServices.Rendering.
                                            HtmlRenderer.Html32RenderingExtension,
                                            Microsoft.ReportingServices.HtmlRendering" 
                                            Visible="false" /> 
            <Extension Name="MHTML" Type="Microsoft.ReportingServices.Rendering.
                                          HtmlRenderer.MHtmlRenderingExtension,Microsoft.
                                          ReportingServices.HtmlRendering" /> 
            <Extension Name="EXCEL" Type="Microsoft.ReportingServices.Rendering.
                                          ExcelRenderer.ExcelRenderer,
                                          Microsoft.ReportingServices.ExcelRendering" /> 
        </Render> 
        <Data> 
            <Extension Name="SQL" Type="Microsoft.ReportingServices.DataExtensions.
                                        SqlConnectionWrapper,
                                        Microsoft.ReportingServices.DataExtensions" /> 
            <Extension Name="OLEDB" Type="Microsoft.ReportingServices.
                                          DataExtensions.OleDbConnectionWrapper,
                                          Microsoft.ReportingServices.DataExtensions"/> 
            <Extension Name="OLEDB-MD" Type="Microsoft.ReportingServices.DataExtensions.
                                             AdoMdConnection,Microsoft.
                                             ReportingServices.DataExtensions"/> 
            <Extension Name="ORACLE" Type="Microsoft.ReportingServices.
                                           DataExtensions.OracleClientConnectionWrapper,
                                           Microsoft.ReportingServices.DataExtensions"/> 
            <Extension Name="ODBC" Type="Microsoft.ReportingServices.DataExtensions.
                                         OdbcConnectionWrapper,Microsoft.ReportingServices.
                                         DataExtensions"/> 
            <Extension Name="XML" Type="Microsoft.ReportingServices.DataExtensions.
                       XmlDPConnection,Microsoft.ReportingServices.DataExtensions"/> 
            <Extension Name="RS" Type="Microsoft.ReportingServices.DataExtensions.
                       RSDPConnection,Microsoft.ReportingServices.DataExtensions"/> 
            <Extension Name="CUSTOM_DATASOURCE" 
                       Type="DataSourceExtension.DataSetConnection, DataSourceExtension" />
        </Data> 
        <Designer> 
            <Extension Name="SQL" Type="Microsoft.ReportingServices.QueryDesigners.
                       VDTQueryDesigner,Microsoft.ReportingServices.QueryDesigners"/> 
            <Extension Name="OLEDB" Type="Microsoft.ReportingServices.QueryDesigners.
                       VDTQueryDesigner,Microsoft.ReportingServices.QueryDesigners"/> 
            <Extension Name="OLEDB-MD" Type="Microsoft.ReportingServices.QueryDesigners.
                       ASQueryDesigner,Microsoft.ReportingServices.QueryDesigners"/> 
            <Extension Name="ORACLE" Type="Microsoft.ReportingServices.QueryDesigners.
                       VDTQueryDesigner,Microsoft.ReportingServices.QueryDesigners"/> 
            <Extension Name="ODBC" Type="Microsoft.ReportingServices.QueryDesigners.
                       VDTQueryDesigner,Microsoft.ReportingServices.QueryDesigners"/> 
            <Extension Name="XML" Type="Microsoft.ReportingServices.QueryDesigners.
                       GenericQueryDesigner,Microsoft.ReportingServices.QueryDesigners"/> 
            <Extension Name="RS" Type="Microsoft.ReportingServices.QueryDesigners.
                       SMQLQueryDesigner,Microsoft.ReportingServices.QueryDesigners"/> 
            <Extension Name="CUSTOM_DATASOURCE" Type="Microsoft.ReportingServices.
                       QueryDesigners.GenericQueryDesigner,
                       Microsoft.ReportingServices.QueryDesigners"/>
        </Designer> 
    </Extensions> 
</Configuration>

安全配置

安全性保存在 RSPreviewPolicy.config 文件中,该文件与配置文件(RSReportDesigner.config)位于同一文件夹。此文件为 SQL Server Reporting Services 提供安全策略,并允许访问您的 DLL。

   <CodeGroup 
        class="UnionCodeGroup" 
        version="1" 
        PermissionSetName="FullTrust" 
        Name="Customer_DataSource"
            Description="Code group for my Custom DataSource for data processing extension">
            <IMembershipCondition 
            class="UrlMembershipCondition" 
            version="1" 
            Url="C:\Program Files\Microsoft Visual Studio 8\Common7\
                 IDE\PrivateAssemblies\DataSourceExtension.dll"
            /> 
   </CodeGroup>

服务器安装

要配置运行报表的服务器上的自定义数据扩展,只需遵循上述步骤,只是您会发现配置文件位于不同的位置,并且根据安装的不同,它们会出现在不同的地方。在我的安装中,它们都保存在 C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\bin,配置文件保存在 C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer,配置文件名为:

  • rsreportserver.config
  • rssrvpolicy.config

由于这是服务器安装,您将不需要创建或添加 <Designer> 标签。

自定义数据源扩展的测试

为了测试自定义数据源扩展,您需要生成一个报表或一个指向新的自定义数据源扩展的共享数据源。

在 Visual Studio 2005 中创建一个新项目,选择“商业智能项目”,然后从模板列表中选择“报表服务器项目向导”。在新的数据类型列表中,您应该会看到“自定义数据源扩展”。如果看不到,但看到 **CUSTOM_DATASOURCE**,则表示配置未识别您的 DataSourceExtension.dll,您需要检查配置文件。

Custom Data Source Extension

输入连接字符串,例如:“FileName=C:\bottles.xml”,您可以在顶部的下载部分找到此文件。单击下一步,这将带您到“设计查询”屏幕。输入以下查询:“select * from company”,如下图所示:

query builder

单击“下一步”,然后继续直到完成报表的创建。现在您应该能够运行报表,使用新的自定义数据源扩展,您可以根据自己的需求对其进行自定义和调整。

关注点

现在它已运行并正常工作,值得回顾一下如何调试自定义数据扩展。我本来不打算在本文中涵盖这一点,并将您引导至 Microsoft TechNet 上关于调试数据处理扩展代码的文档,因为这应该为您提供有关如何设置调试的足够信息。

历史

首次发布。

© . All rights reserved.