SSRS 制作报表时报错: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。
转载注明出处,原文地址:http://www.cnblogs.com/zzry/p/5718739.html
在用ssrs 制作报表时报如下错误 错误信息截图:
看到如上错误第一个想到的解决方法就是改配置之类的设置了 不过发现更改后都没有生效
改过的地方比如上图的【超时值(秒)/(M)】 改到很大99999999依然没有效果
网上查了下 改下面两个值 好像也无济于事
于是乎 ,换个思路,跟踪后台sql 看看到到底在执行什么玩意
我报表里执行了类似下面的代码
exec SP_DM_test @begtime ,@endtime --内容不贴了,因为要计算的结果集过亿导致运行这个sp耗时在几分钟左右 SELECT [c1] ,[c2] ,[c3] ,[c4] FROM test1
开启SQL Server Profiler (不会使用的可以百度下 这里给了链接:http://www.cnblogs.com/Fooo/archive/2013/02/19/2916789.html)
1.SQL Server Profiler 开启后,点击下图的【刷新字段】按钮
2.不输参数,直接跑 点击确定
3.查看SQL Server Profiler
4.如上图 问题看上去清晰了,这玩意预先执行了代码。
那可以从这个点着手修改代码,下面是一个参考,思路是就是让空参数的情况下既能拿到字段,也能通过预执行
比如写成如下样式
IF ISNULL(@begtime, '') = ''
OR ISNULL(@endtime, '') = ''
BEGIN
SELECT [c1] ,
[c2] ,
[c3] ,
[c4]
FROM test1; --得让他查到字段,不然结果集dataset那里刷不出来字段
RETURN;
END;
ELSE
BEGIN
EXEC SP_DM_test @begtime, @endtime; --存储过程里有三个逻辑 1.truncate table test1 2.计算结果集 3.计算后结果插入test1
SELECT [c1] ,
[c2] ,
[c3] ,
[c4]
FROM test1;
END;
好了,在点击那个刷新字段按钮就不错了。问题解决。
总结:
1.跟踪后台预执行的sql
2.尝试修改逻辑满足让空参数的情况下既能拿到字段,也能通过预执行允许的时长。
转载注明出处,原文地址:http://www.cnblogs.com/zzry/p/5718739.html