`
冷寒冰
  • 浏览: 241849 次
  • 性别: 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时表示超时无限长。无限长的设置主要对调试有用,调试过程中可能要逐步通过代码来隔离业务逻辑中的问题,并且在尝试确定问题期间不希望所调试的事务超时。在所有其他情况下使用无限长的超时时一定要格外小心,因为它会覆盖防止事务死锁的保护。
分享到:
评论

相关推荐

    c# 时间方法

    时间方法 时间格式 YYYY-mm-dd HH:MM:SS部分解释

    Nginx的超时timeout配置详解

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

    jQuery AJAX timeout 超时问题详解

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

    node.js超时timeout详解

    如果在指定的时间内服务器没有做出响应(可能是网络间连接出现问题,也可能是因为服务器故障或网络防火墙阻止了客户端与服务器的连接),则响应超时,同时触发http.ServerResponse对象的timeout事件. response.setTimeout...

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

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

    Nginx超时设置.docx

    nginx中的超时设置,请求超时、响应等待超时等: nginx timeout 配置 全局timeout 局部timeout web timeout nginx比较强大,可以针对单个...proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响应超时时间

    Nginx 上传大文件超时解决办法

    情况如下:用nginx作代理服务器,上传大文件时(本人测试上传50m的文件),提示上传超时或文件过大。 原因是nginx对上传文件大小有限制,而且默认是1M。另外,若上传文件很大,还要适当调整上传超时时间。 解决方法...

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

    使用bootstrapTable获取数据时,有时由于网络或者服务器的原因,无法及时获取到数据,页面显示一直处于等待状态。为了改善效果,考虑设置超时,请求发送后超时即显示无数据,过段时间重新发起请求

    pytimeout:使用 Django 和 Gunicorn 在 Python Web 服务器的请求响应周期上实现超时的实验

    py超时在使用 Django 和 Gunicorn 的 Python Web 服务器的请求/响应周期中限制函数执行时间的小实验。 :watch: 在开发 Django 应用程序时,我很好奇是否可以限制特定视图的执行时间以确保它在截止日期之前返回,例如...

    YandexClickHouse的GolangSQL数据库驱动程序_Go_Makefile_下载

    timeout - 指定等待服务器响应的时间量\nlocation - 解析日期和日期时间的时区\ndebug - 启用调试日志记录\nkill_query - 如果我们有传输错误,则在服务器端启用终止查询\nkill_query_timeout - 终止查询的超时时间...

    IIS中保持HTTP连接的设置方法

    大多数 Web 浏览器要求服务器在多个请求中保持连接打开。...启用后,保持连接的持续时间是连接超时设置允许的时间。 集成安全性和基于连接的验证服务需要保持 HTTP 连接。匿名身份验证(使用 NTLM)需要保持 HTTP

    Loadrunner报错日志

    因为负载生成器的性能太好,发数据包特别快,服务器也响应特别快,从而导致负载生成器的机器的端口在没有timeout之前就全部占满了。在全部占满后,就会出现上面的错误。执行netstat –na命令,可以看到打开了很多...

    go-clickhouse:用于Yandex ClickHouse的Golang SQL数据库驱动程序

    ClickHouse 另一个Golang SQL数据库驱动程序 ... read_timeout-指定等待服务器响应的时间 位置-解析Date和DateTime的时区 debug-启用调试日志记录 kill_query-如果发生传输错误,则启用在服务器端终止查询

    on-up:打回电话或时间到了

    打回电话或时间到了。 为什么 在进行持续集成时,例如使用,您必须猜测服务器启动需要多长时间,睡眠时间超过必要时间并希望它足够了。 不再需要。 如何 等待服务器对请求做出响应。 使用响应和/或元数据调用回调...

    cmd操作命令和linux命令大全收集

    at ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机 finger username @host 查看最近有哪些用户登陆 telnet ip 端口 远和登陆服务器,默认端口为23 open ip 连接到IP(属telnet登陆后的...

    java-servlet-api.doc

    在卸载一个Servlet之前,Servlet引擎必须等待所有的service()方法完成或超时结束(Servlet引擎会对超时作出定义)。当一个Servlet被卸载时,引擎将不能给Servlet发送任何请求。引擎必须释放Servlet并完成无用存储...

    nginx_upstream_check_module-master.zip

    同时,在采用"GET"方法的情况下,请求uri的size不宜过大,确保可以在1个interval内传输完成,否则会被健康检查模块视为后端服务器或网络异常。 Syntax: check_http_expect_alive [ http_2xx | http_3xx | ...

    CURL用法大全

    68:在TFTP服务器上找不到文件。 69:TFTP服务器权限有问题。 70:TFTP服务器磁盘空间不足。 71:非法的TFTP操作。 72:未知TFTP传输编号(ID)。 73:文件已存在(TFTP) 。 74:无此用户(TFTP) 。 75:字符转换失败。 76:需要...

    irc-message-action

    IRC消息动作 此操作将消息打印到给定的IRC通道。 (可选)它等待给定用户的响应 输入项 server IRC服务器的主机名默认值:'chat.freenode.net... 等待响应的超时时间(以秒为单位) 默认值:60 debug 启用详细输出。

    Nginx安装包

    * proxy_connect_timeout:与服务器连接的超时时间,默认60s * fail_timeout:当该时间内服务器没响应,则认为服务器失效,默认10s * max_fails:允许连接失败次数,默认为1 这里我们所需等待时间 = proxy_...

Global site tag (gtag.js) - Google Analytics