LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

MSSQL数据库查询“超时时间已到……”的解决方案

admin
2012年3月2日 23:10 本文热度 2792
问题描述
---------------------------------------------------------------------------------------------------
数据库链接字符串:
Data Source=*.*.*.*;InitialCatalog=DatabaseName;Persist Security Info=True;UserID=****;Password=******
使用SqlHelper组件处理数据库查询业务,在MSSQL数据库中进行大数据量查询的时候,会经常出现“超时时间已到。在操作完成之前超时时间已过或服务器未响应。”的错误。

原因分析
---------------------------------------------------------------------------------------------------
1、当数据库表中存在超大数据记录,则在应用程序Command命令执行时,使用默认的数据库链接超时时间(30秒)配置就容易出现以上超时错误;
2、在事务开始BeginTransaction()与事务结束transaction.Commit()中间用到了没有启动事务的过程,如其他查询等,会提示此错误;
3、在web页面上传大批量文件时,也容易出现超时错误;

解决方案
---------------------------------------------------------------------------------------------------
1、可以在数据库连接字符串中加入以下参数:

Connect Timeout=600;Enlist=true; Pooling=true; Max Pool Size=512; Min Pool Size=0;Connection Lifetime=600

2、如果数据量非常大,以上超时错误仍然存在,则可以在数据库创建链接时自定义延长数据库执行超时时间,并参考以下代码段:

using (SqlCommand cmd = new SqlCommand())
{
    using (SqlConnection connection =new SqlConnection(dbConnStr))
    {
      connection.Open();

      cmd.Connection = connection;
      cmd.CommandTimeout = cmd.Connection.ConnectionTimeout;

      cmd.CommandText = sqlStr; //数据库执行查询语句,内容略
       object temp1 = cmd.ExecuteScalar();//同样适用于其他数据库操作

      connection.Close();
    }
}

3、对于web应用程序超时,可以在web.config中增加以下语句:
<system.web>
       <httpRuntime maxRequestLength="102400" executionTimeout="1800" />
</system.web>
httpRuntime:是配置asp.nethttp运行时设置,以确定如何处理对asp.net应用程序的请求;
executionTimeout:表示允许执行请求的最大时间限制,单位为秒;
maxRequestLength:指示 ASP.NET支持的最大文件上载大小,该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为4096 KB (4 MB);
~其他配置参考~
useFullyQualifiedRedirectUrl:表示指示客户端重定向是否是完全限定的(采用"http://server/path" 格式,这是某些移动控件所必需的),或者指示是否代之以将相对重定向发送到客户端。如果为True,则所有不是完全限定的重定向都将自动转换为完全限定的格式。false 是默认选项;
minFreeThreads:表示指定允许执行新请求的自由线程的最小数目。ASP.NET为要求附加线程来完成其处理的请求而使指定数目的线程保持自由状态。默认值为 8;
minLocalRequestFreeThreads:表示ASP.NET保持的允许执行新本地请求的自由线程的最小数目。该线程数目是为从本地主机传入的请求而保留的,以防某些请求在其处理期间发出对本地主机的子请求。这避免了可能的因递归重新进入Web 服务器而导致的死锁;
appRequestQueueLimit:表示ASP.NET将为应用程序排队的请求的最大数目。当没有足够的自由线程来处理请求时,将对请求进行排队。当队列超出了该设置中指定的限制时,将通过“503- 服务器太忙”错误信息拒绝传入的请求;
enableVersionHeader:表示指定ASP.NET 是否应输出版本标头。Microsoft Visual Studio 2005 使用该属性来确定当前使用的ASP.NET 版本。对于生产环境,该属性不是必需的,可以禁用。

该文章在 2012/3/2 23:10:35 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved