`
冷寒冰
  • 浏览: 249110 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。

 
阅读更多
Microsoft SQL Server 2008 R2   这是我使用的数据库。我是从接口中取到一个XML,然后将XMl传到存储过程中,在存储过程中针对XML进行操作。但是由于XML的数据量过大,因此会出现如标题一样的错误。 我百度了   看到网友说在连接字符串上写Connection Timeout=0;  我加了这个。我的sql连接字符串如下“server=service;UserID=sa;Password=123;database=test;Connection Timeout=0;Connection Reset=FALSE”

但是这样没有效果。所以求老鸟指教    看我这新手又是哪个步骤给丢了  求指教

最佳答案

你理解错了,Connection Timeout 是指等待连接打开的时间(以秒为单位)。默认值为 15 秒。

你现在的问题是连接已经成功了,并不是等待连接超时,你应该把那个异常给贴出来。

鉴于你提到存储过程执行周期较长,因此这里的超时是指的客户端等待服务器响应的超时,同Connection Timeout没有任何关系。

目前我还没找到如何控制TCP层面的超时设置,但是你可以尝试使用异步的方式来执行这个存储过程,在连接字符串中标记:Asynch = True,在调用时采用 BeginExecute 来执行你得存储过程。



你可以尝试用 SqlCommand.CommandTimeout 来设置超时。

在异步方法调用(如 BeginExecuteReader)过程中,CommandTimeout 属性将被忽略

因此上面两种方式应该都可以解决你的问题。

收获园豆:10

Launcher|高人七级|园豆:26930 | 2013-01-07 14:10
.



嗯     我的错误
已经解决了     是我理解错误了   我那个不是连接超时   而是执行的时间太长


备注


--------------------------------------------------------------------------------



在连接字符串中使用 ConnectTimeout 或 Connection Timeout 关键字,可以设置某个连接等待超时的时间。值 0 指示无限制,在 ConnectionString 中应避免值 0,否则会无限期地等待连接尝试。



为0的时候是不受时间限制了。  我不知道是不是数据库的原因,在有的帖子上看到说sqlserver2008的时间是自动去设置的   我不知道是不是这个原因


-----------------------事务超时-----------------------------------




C#中分布式事务的超时处理问题
.
2012-09-05 11:48501人阅读评论(0)收藏举报

c#insert测试google微软


  事务是个很精妙的存在,我们在数据层、服务层、业务逻辑层等多处地方都会使用到。

      在这里我只说下TransactionScope这个微软推荐使用的隐式事务。它是从Framework 2.0开始引入的一个事务管理类,在使用隐式事务时,事务完成前 程序应调用TransactionScope的Complete()方法,将事务提交,然后利用Dispose()释放事务对象。若执行期间出现错误,事务将自动回滚。

   比如:
     using (ransactionScope scope = new TransactionScope())

     {

        //to do something

        scope.Complete();

     }

在这里个人建议用using来创建,因为using实现了IDispose接口,它会隐式的调用TransactionScope对象的Dispose方法,即使发生异常时也是如此,能确保在事务结束或者异常的时候也能正确的释放资源。其实我们反编译一下,它的内部实现就是一个try...finally代码块,这样也就不难理解using的作用了。

说主题,在某地市的某库升级中,为避免程序运行中产生脏数据以及数据更新不一致导致的重复同步情况,在可能产生上述问题的考虑下,我用这个TransactionScope来对上述的操作进行事务处理。在本机的测试环境中,运行结果是正常的,当然这个运行正常的前提是数据量较小的情况下,我每次只对一条或者十几条数据的不同表进行insert和update。然而部署到生产环境针对真实数据运行之后,发现这个事务总是回滚,一直无法正常提交。程序也就没法正常跑起来。因为生产环境中的数据有60W左右,insert一次、update一次,最后再insert一条同步语句,前2个操作都是比较耗时的。我切换回测试环境调试了一下,逐行运行,发现当执行完第一个insert之后,执行第二个update时发生异常了。这个异常由TransactionScope抛出,异常提示是:事务已中止。这个错误,在数据量小的情况下不会发生,数据量大一些就出现了,这个是不是和事务处理的时间长短有关呢?因为我明显感觉到在这次调试的时候,执行的时间比之前数据量只有一条的时候长了很多,至少花费1分钟以上。于是google一下,验证了我的想法。
        TransactionScope有些重载函数是可以接受TimeSpan类型的值,这个就是事务的超时时间了。当事务实现隔离的时候,事务范围内的资源将会被锁定,如果一些事务长期占有资源,那将很容易造成死锁,为了避免这个问题,TransactionScope事务会定义一个超时限制,这个超时默认值为60秒。如果事务超过此时间,即使没有发生异常,也会自动中止。上面问题的原因算是找到了,知道了原因,那么也就很好解决了。我们可以在Web.Config 中配置:
<configuration>


<system.transactions>

    <defaultSettings timeout="00:05:00" />

</system.transactions>

</configuration>



或者在using的时候就定义好超时时间:




using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required,
new TimeSpan(0, 5, 0)))

或者先初始化事物行为的附加信息,然后定义超时时间:



TransactionOptions tOpt = new TransactionOptions();

tOpt.IsolationLevel = IsolationLevel.ReadCommitted; //设置TransactionOptions模式

tOpt.Timeout = new TimeSpan(0, 5, 0); // 设置超时时间为5分钟                       
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, tOpt))


我这里定义的是5分钟,其实整个过程处理起来也就第一次处理历史数据需要1到2分钟时间,以后每天只需处理几十条数据,这个时间基本是秒级别的。
       这里说明下, 超时时间如果设置为0时表示超时无限长。无限长的设置主要对调试有用,调试过程中可能要逐步通过代码来隔离业务逻辑中的问题,并且在尝试确定问题期间不希望所调试的事务超时。在所有其他情况下使用无限长的超时时一定要格外小心,因为它会覆盖防止事务死锁的保护。
分享到:
评论

相关推荐

    为jquery的ajax请求添加超时timeout时间的操作方法

    使用timeout属性,开发者可以自行决定在什么情况下放弃等待服务器的响应,从而执行其他操作,比如再次发起请求或者给用户一个错误提示。 举个简单的例子,如果我们希望一个Ajax请求最多等待4秒钟,可以这样设置: ...

    c# 时间方法

    `DateTime` 提供了多种方法来增加或减少日期时间值、比较不同的日期时间以及进行日期时间的格式化等操作。 #### 增加和减少日期时间 `DateTime` 类提供了一系列的方法来增加或减少日期时间: - **AddDays**: 使用...

    详解Nginx服务器中配置超时时间的方法

    6. **proxy_read_timeout**: 该参数设置了Nginx等待上游服务器响应的超时时间。这不包括获取完整响应的时间,而是两次读取操作之间的时间间隔。默认值也是60秒,可以按需调整。 7. **client_header_timeout**: 指定...

    Nginx的超时timeout配置详解

    本文介绍 Nginx 的 超时(timeout)配置。分享给大家,具体如下: Nginx 处理的每个请求均有相应的超时设置。如果做好这些超时时间的限定,判定超时后资源被释放,用来处理其他的请求,以此提升 Nginx 的性能。 ...

    python 使用request时关于timeout参数设置无效和报错遇到的一些问题以及解决(csdn)————程序..pdf

    在处理网络请求时,有时可能会遇到响应时间过长或请求无法完成的情况,这时候`timeout`参数就显得尤为重要。本文主要探讨了在使用`requests`库时关于`timeout`参数设置无效的问题以及解决方法。 首先,`timeout`...

    Modbus RTU 通信连接超时参数.docx

    3. **主站定时参数 (Blocked_Proc_Timeout)**:在主站功能块MB_Master的背景数据块中,`Blocked_Proc_Timeout`参数定义了在主站请求未完成且Done和Error都没有置位时,等待的最长时间,以防止单个指令独占端口。...

    在vue中axios设置timeout超时的操作

    本文将详细介绍在Vue项目中使用axios库设置请求超时(timeout)的方法,并对axios拦截器进行说明,以便对网络请求进行统一的错误处理。 首先,了解如何在axios中设置超时时间。在axios中,可以很直观地通过请求配置...

    netty的timeout

    当写入或读取操作开始时,它们会启动定时任务,如果在指定时间内操作没有完成,定时器就会触发一个超时事件,然后通过 `fireUserEventTriggered` 方法将超时事件传递给 ChannelPipeline 中的其他处理器。 在 `netty...

    Nginx超时设置.docx

    - **lingering_timeout**:当 `lingering_close` 生效时,此参数定义了在关闭连接之前等待新数据到达的超时时间。如果超过这个时间后仍然没有新的数据,则直接关闭连接。 - **resolver_timeout**:设置 DNS 解析的...

    timeout.zip

    当一个操作在预设的时间内没有完成,系统就会触发超时事件,通常会返回一个错误信息或终止该操作。 - 在网络通信中,超时用于检测连接丢失或数据传输延迟过大。例如,HTTP请求中的超时设置可以防止因服务器无响应而...

    SQL查询超时的设置方法(关于timeout的处理)

    通过对`connect_timeout`、`interactive_timeout`、`wait_timeout`等参数的调整,可以更好地控制连接的生命周期,防止因长时间无响应导致的问题,并确保系统能够有效地处理各种查询。在进行调整时,务必根据实际情况...

    cxf超时设置

    正确配置超时设置能够帮助提高应用的健壮性,避免由于网络不稳定或服务器响应慢导致的长时间等待。同时,需要注意根据实际业务需求和网络环境调整超时值,以达到最佳的性能平衡。在某些场景下,可能还需要结合重试...

    jQuery AJAX timeout 超时问题详解

    如果服务器响应时间超过了 设置的时间,则进入 ERROR (错误处理) 超时解决方案: 1.默认的timeout为0,代表永不超时 2.尽量把timeout设置的大一点。坏处:使数据的加载变慢(貌似。呵呵)。 3.在ERROR回调函数...

    Nginx timeout超时配置详解

    Nginx的timeout超时配置是它的一个重要特性,它决定了在一定时间内没有活动或完成操作时,连接或请求将被关闭。这对于优化服务器性能、处理客户端超时和防止资源浪费至关重要。 首先,让我们从HTTP KeepAlive模式...

    resteasy设置timeout

    超时是为了避免客户端在等待服务器响应时无限期地阻塞,它为请求设定了一个预期的响应时间。如果超过了这个时间限制,客户端会认为服务器没有响应并采取相应的处理措施,如重试或显示错误信息。 RESTEasy本身并不...

    BootstrapTable请求数据时设置超时(timeout)的方法

    在实际应用中,由于网络延迟或服务器响应时间过长,用户可能会遇到数据加载不畅的问题。为了解决这个问题,BootstrapTable 提供了设置超时(timeout)的功能,使得在请求数据时可以设定一个等待限制,超过这个限制就...

    cpp-并行执行http请求支持超时设置

    通过`curl_multi_perform`可以并行执行这些请求,同时利用`curl_easy_setopt`设置超时参数,如`CURLOPT_TIMEOUT`来指定单个请求的超时时间。 压缩包中的`paw-master`可能是一个开源项目,它可能包含了实现上述功能...

    Loadrunner Timeout问题解决方法.docx

    这个错误意味着脚本中的某个步骤在等待服务器响应时超过了预设的超时时间(默认为120秒)。超时可能由多种原因引起,例如服务器处理请求的时间过长、网络延迟或服务器负载过高。 解决Timeout-27728问题的首要方法是...

Global site tag (gtag.js) - Google Analytics