最近在做SSRS项目时,遇到这么一个情形:该项目有多个数据库,每个数据库都在不同的服务器,但每个数据库所拥有的数据库对象(table/view/SPs/functions)都是一模一样的,后来结合网络上众多的资源找到了解决方案,即Data Processing Extensio(DPE)。所谓DPE,直白地说就是开发自己的DLL去扩展SSRS的数据源,具体的操作如下所示:

1. 新建类库项目,并引入以下两个DLL:

    C:\Program Files\Microsoft SQL Server\MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.ReportingServices.Interfaces.dll

  C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll

2. 根据参数获取Connection String:新建DBConnection类文件,实现接口IDbConnectionExtension并且重写其中的方法:

  A. SetConfiguration():主要是实现读取数据库连接的配置文件:

public void SetConfiguration(string configuration)
{
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(configuration);
    string ConfigFilePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + xmlDoc.ChildNodes[0].Attributes["configSource"].InnerText;
    ExeConfigurationFileMap file = new ExeConfigurationFileMap();
    file.ExeConfigFilename = ConfigFilePath;
    Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None);
    foreach (ConnectionStringSettings cf in config.ConnectionStrings.ConnectionStrings)
    {
        connectionStrings.Add(cf.Name, cf.ToString());
    }
}
View Code

相关文章:

  • 2022-12-23
  • 2021-12-10
  • 2021-06-04
  • 2021-08-23
  • 2022-12-23
  • 2021-09-07
  • 2021-11-24
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-04
  • 2022-12-23
  • 2022-12-23
  • 2021-04-29
相关资源
相似解决方案