【发布时间】:2014-07-09 22:09:06
【问题描述】:
我有一个存储过程,我在 SQL Server Management Studio 中反复测试过它,它运行良好,大约 3 秒内返回结果;但是,当我在报表生成器中添加存储过程作为新数据集的查询类型并尝试运行报表或通过内置 Query Designer 执行 SP 时,执行调用超时。我什至还没有在报告中的任何区域(Tablix 或图表)中使用过数据集。
我已确保 Data Sources 凭据设置正确,甚至测试了与数据库的连接并收到了成功的连接语句。
我将数据集Time out 属性设置为0,这意味着没有超时。显然,在这种特殊情况下,我收到的超时是由 SQL Server 而不是由报表生成器处理的。
什么会使存储过程在从服务器执行时正确且高效地执行(速度方面),但在从报表生成器执行时会超时?
我正在运行 2008 R2。
请帮忙!提前致谢。
【问题讨论】:
-
您是否使用从 SSRS 传递的相同参数在 SSMS 中进行了测试?
-
不知道你是怎么设置timeout为0的,一般我打开report文件(XML格式),直接修改timeout。我不记得确切的位置,但应该是调用存储过程时的对象。数据集超时(您提到的)可能与 proc exec 超时不同。
-
您可以使用 SQL Profiler 准确计算出提交给数据库的内容,然后直接提取并排除故障。
-
SQL Server 数据库引擎不会使查询超时。查询超时错误发生在客户端,因此数据集
Time out属性似乎没有得到遵守。性能差异的原因可能是执行计划不同。请参阅sommarskog.se/query-plan-mysteries.html 了解计划可能不同的原因。 -
@M.Ali,是的,这就是我试图在我的 OP 中传达的内容。我已经在 SSMS 中使用相同的参数进行了测试,它运行正确并在 3-4 秒内返回(每次都没有例外)
标签: sql-server stored-procedures reporting-services sql-server-2008-r2 reportbuilder3.0