【发布时间】:2009-05-07 13:49:23
【问题描述】:
Given:一个 C# 计算引擎,它加载一个对象模型,处理大量数字,并将结果保存到 SQL Server 中的几个巨大的索引数据库表中。这些表格为 Web 界面、其他软件模块和 SQL Server Reporting Services 2005 报告提供数据。
我设法在最新版本的软件中使引擎速度提高了很多,现在它可以根据请求提供数据,速度足够快 - 有时甚至比查询预先计算的数字的数据库。我对此感到非常高兴。
这一突破意味着我们可以根据请求为 Web 界面和其他软件模块生成数据。但是缓存表还不能消亡,因为它们被 SSRS 报告(或者更具体地说,被查询表并向 SSRS 提供数据的存储过程所消耗。)
缓存表是一种痛苦,就像任何缓存在软件世界中都是一种痛苦一样。无需过多介绍,它们有同步问题、锁定问题等。如果我不必担心让那些该死的表保持最新状态,该软件会运行得更好。
但我还能如何将数据导入 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 我被我们必须在客户端数据库服务器上进行的额外设置关闭了。
- 我们将不胜感激任何其他建议。
【问题讨论】:
-
我已经为任何可以为我提供良好经验/信息/规格/数字的人添加了赏金,以了解是否可以使用 SQLCLR/Web 服务实现这一目标,或者任何其他有助于解决此问题的好主意情况。
-
您好,我是否正确理解缓存表主要由 SSRS 用于报告目的?听起来报告是您的应用程序/解决方案的一个方面,但由于这个方面,它会导致为了报告的目的而完成一些令人讨厌的数据库工作?
-
没错,Rihan。报告是应用程序的一个组件,这些讨厌的表格的存在只是为了为报告提供数据。
-
看来我必须了解赏金的运作方式。我的赏金已过期并被自动授予。感谢您的所有建议,大家!正如 Alex Angas 所建议的,我们在下一个版本的软件中的第一步将是创建一个数据 Web 服务并尝试使用 XML DPE。此模块中没有那么多 报告可以替换,而且数据相当简单,因此我们将试一试。如果结果证明这是一条死胡同,我们已经有了 Web 服务,接下来可能会尝试使用 SQLCLR Web 服务调用程序。再次感谢!
-
@BarryFandango,是的,这个问题看起来并没有最终解决。下面有很多推测性的答案。我很好奇你的最终解决方案是什么。
标签: c# sql web-services reporting-services