SQL 报告 - 多页 EMF 报告问题
Posted
技术标签:
【中文标题】SQL 报告 - 多页 EMF 报告问题【英文标题】:SQL Reporting - multipage EMF report issues 【发布时间】:2012-05-17 05:45:35 【问题描述】:我希望有人就这个问题提供帮助。这个问题一直是许多人的烦恼,因为以编程方式呈现 EMF 格式报告在 SQL2008 R2 和 SQL2012 中不起作用。
这是通过 MS 连接在这里记录的:https://connect.microsoft.com/SQLServer/feedback/details/560911/sql-2008-r2-reportexecutionservice2005-broken-with-image-emf#tabs
总而言之,当调用 ReportExecutionService 对象的 Render 方法时,它会返回第一页以及流 ID 的数组(通过输出参数)以映射后续页面。然后为每个后续页面调用该流上的 RenderStream 方法。在 2008 年工作得很好。在 2008 R2 / 2012 年,流 ID 数组返回为空,这意味着您只能获得第一页 - 使其无用。
我很高兴看到 MS 发布了 2012 年的修补程序来修复它:http://support.microsoft.com/kb/2637802
但是,在安装了修补程序/重新启动/等之后,我仍然有问题。有没有人让热修复工作?有过同样的经历吗?知道大型报告的可行解决方案吗?
感谢您的帮助。 史蒂夫
【问题讨论】:
嗨约书亚 - 谢谢。我没有意识到我对此如此懈怠(也没有完全理解它)。我已经回顾了过去的答案,并在应得的地方给予了赞扬。需要时总是欢迎踢裤子:) 【参考方案1】:对于具有多个页面的 EMF,您必须使用 rs:PersistedStreams=True
和 rs:GetNextStream=True
URL 访问参数。有关这些的更多信息:http://blogs.msdn.com/b/jgalla/...
很遗憾,这不会立即为您提供帮助,因为您无法使用 s-s-rS 执行 Web 服务中的 URL 访问参数。
您将必须构造一个 WebRequest,如上面 blog 所示(您需要自己将整个 url 放在一起)或使用 ReportViewer 控件,如下所示:http://blogs.msdn.com/b/brianhartman/...
这里也是discussion about the multipage EMF issue。上面的链接也包括在那里。
最后一点,我在安装 SQL 2008 R2 上进行了测试,后来添加了 SP1,然后是 SP1 CU6。 SP1 CU6 包含根据this 的修补程序。 如前所述,在所有情况下,EMF 的 streamIDs 参数都为空。 无论如何,在我的机器上之前安装了 SQL 2005,并且可能在某个时候安装了 2008。一些帖子表明以前安装的 SQL Server 可能存在问题,因此安装干净的操作系统可能会有所帮助。如果您迫切希望它起作用。
【讨论】:
嗨 HB,非常感谢您提供的解决方案。我使用基于第二个链接的渲染函数的重载来构建报告。它允许使用我在 2008 R1 和 SQL 2012 中使用的相同 ServerReport 对象传入 rs:PersistStreams 参数,以便轻松升级。谢谢一百万 - 你是冠军。 @MrCraze,你是怎么做到的,因为允许传递 urlAccessParameters 的重载不输出 streamIDs?以上是关于SQL 报告 - 多页 EMF 报告问题的主要内容,如果未能解决你的问题,请参考以下文章