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 

 

posted @ 2016-07-29 16:29  一百零七个  阅读(661)  评论(0编辑  收藏  举报