首先让我在BIDS 2008中描述我的报告项目:
此外,我在报表服务器上启用了远程错误。
在Reports Server上,此设置在过去3年中运行良好,直到我需要重新编写存储过程,该数据存储过程需要很长时间才能运行的报告总是超时。修订后的存储过程现在运行35秒。相比之前的18分钟。程序的输出没有改变;相同数量的列具有相同的数据类型。
执行报告时我注意到以下行为。它在BIDS中运行时没有问题但是一旦部署,运行报告就会产生以下错误:
报告处理期间发生错误。 (rsProcessingAborted) 共享数据集'Recon_Rw_1'的执行失败。 (rsDataSetExecutionError) 数据集''的查询执行失败。 (rsErrorExecutingCommand) 数据库中已经有一个名为“PK_unit_open_status”的对象。无法创建约束。查看以前的错误。
确认 - 修订过程包含包含各种索引的临时表。我在程序执行期间监视了(在tempdb上)创建的临时表,并确认在程序终止后删除了所有表 - 实际上我还在程序结束时包含了一个部分来删除所有创建的临时表。
该报告包含2个嵌入数据集,用于过滤共享数据集中的数据。上述错误中引用的数据集是嵌入的数据集之一。有时会更改错误消息以引用其他嵌入数据集。
这是我难倒的地方 - 在报表服务器上导致此行为的原因是什么?回想一下,我没有修改共享或嵌入数据集,数据源仍然像以前一样。所有其他报告都没有问题。
非常感谢任何帮助。
答案 0 :(得分:0)
以下是我为解决这个问题所采取的措施 - 我在程序声明后添加了“START TRANSACTION”,最后添加了“COMMIT TRANSACTION”。我不确定这是否有任何性能缺陷或带来任何风险。欢迎提供这方面的任何反馈。