如何将非表数据导入SQL Server Reporting Services?

Jam*_*Orr 12 c# sql web-services reporting-services

给定:AC#计算引擎加载对象模型,压缩大量数字,并将结果保存到SQL Server中的几个巨大的索引数据库表中.这些表为Web界面,其他软件模块和SQL Server Reporting Services 2005报告提供数据.

我设法让发动机上的很多在软件的最新版本速度更快,速度不够快,现在,它可以要求提供数据-有时甚至比它需要在数据库中查询预先计算的数字的时间更快.我对此感到非常高兴.

这一突破意味着我们可以根据Web界面和其他软件模块的请求生成数据.但是缓存表还不能消亡,因为它们被SSRS报告(或者更具体地说,是通过查询表并将数据提供给SSRS的存储过程)使用.

缓存表很痛苦,就像任何缓存都是软件世界的痛苦一样.没有太多的细节,他们有同步问题,锁定问题等等.如果我不必担心保持这些darned表更新,软件将更好地工作.

但我怎样才能将数据导入SSRS?我做了很多研究,没有什么看起来太有希望了:

  • 我们可以通过Web服务提供数据并使用SSRS XML DPE.但这看起来有点可怕 - 我是对的,你必须自己解析你的SOAP信封吗?!它不支持XPath,而是一种专有的XPath-y方言?我们的报告编写者了解T-SQL,这就是他们最擅长的.
  • 使用SQL CLR来托管我们的API是不可取的 - 它是一个很大的应用程序,如果不创建应用程序对象并登录等,你就无法做任何事情.
  • 使用SQL CLR联系Web应用程序上的Web服务 - 这是迄今为止最有希望的(本文有用http://www.simple-talk.com/sql/sql-server-2005/practical-sql- server-2005-clr-assemblies /.)有没有人尝试过这种方法?它是否运行良好,是否可以提供大型数据集?OTOH我被客户端数据库服务器上的额外设置关闭了.
  • 任何其他建议将不胜感激.

And*_*mar 9

如果我理解正确,那么您正在构建有关非SQL数据的报告.您将数据存储在表中,以实现使其可报告的特定目的.

我能想到两个解决方案.第一种是使用报告部分扩展您的C#计算引擎.Microsoft.Reporting.WinForms和Microsoft.Reporting.WebForms命名空间可用于在任何数据源上构建报告,而不仅仅是SQL Server.如果最终用户将您的应用用作客户端,则可以即时生成数据和报告.

第二种是使用SQL CLR.您可以使用CLR存储过程作为报告的基础(输入"exec mysp"作为数据源.)此CLR过程是C#代码,可以将您的计算引擎包含为库.这样您就可以动态生成报告,同时仍然使用Report Server用户界面.

有趣的问题,我希望更有知识的人能提供更好的答案:)