`
pcajax
  • 浏览: 2168052 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL超时解决方法

阅读更多

SQL超时解决方法

当使用.NET开发数据库应用时,有时会遇到下面的超时异常,Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

现把解决方法总结一下:
影响服务器产生超时的设置大致有:
1. Server.scrīptTimeout,
2. Connection对象的CommandTimeOut属性,
3. Command对象的CommandTimeOut属性,
4. IE浏览器的设置.

Server.scrīptTimeout,默认值是90秒.
要增大它,在你的asp文件中加一句,如下:
Server.scrīptTimeout=999,
将页面超时设为999秒.
最初我只设置Server.scrīptTimeout,
但仍会出现timeout错误,无论它的值设成都多大.
后在社区里看到一帖子,提到commandTimeout属性,
于是查看Option Pack文档,果然还有其他的timeout.
Connection对象和Command对象都有个CommandTimeOut属性,
连接字符串中设置了 Connect Timeout只对SqlConnection起作用。
SqlCommand.CommandTimeout
获取或设置在终止执行命令的尝试并生成错误之前的等待时间。
等待命令执行的时间(以秒为单位)。默认为 30 秒。
SqlConnection.ConnectionTimeout
获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。
等待连接打开的时间(以秒为单位)。默认值为 15 秒。
一些更详细的对这个问题的描述看:http://www.eggheadcafe.com/PrintSearchContent.asp?LINKID=357
如果你有一个耗时的查询或数据处理,
很容易就超时了.要增大它,也很容易,创建对象后,
设置它的属性,如下:
con.CommandTimeOut = 999,
设为999秒,其中con是一Connection对象.
如设为零,将无限等待,没有这一timeout限制.
Command对象不会继承Connection的这一属性,
所以对可能超时的Command也要单独设置CommandTimeout属性.
最后IE也有个超时设置,5分钟从服务器得不到数据,也超时.
这种情况可能很少碰到,
但当我把一10多万查询的结果保存为mdb文件时,
就遇到了.(至于保存的方法,请参看精华区中的一篇帖子.)
解决方法:(原文请参照微软KB中的Q181050)
1. IE要4.01 sp1以上版本.
2. 在注册表中HKEY_CURRENT_USERSoftwareMicrosoft
WindowsCurrentVersionInternet Settings中
加一DWORD类型ReceiveTimeout,值设为比如8个9.
3. restart computer.

下面是一篇详细的讨论:
"The timeout period elapsed prior to completion of the operation or the server is not responding."

If this sounds familiar using the SqlClient Class or the Data Access Application Blocks "SqlHelper", and you have increased the Connection Timeout and the Connect Lifetime (for pooling) in your connection string(s), its probably because you forgot to set the COMMAND timeout!

A command can be timed out after a certain number of seconds. You might want to set this limit if you foresee to run across particularly lengthy operations. As in ADO, the property to check is CommandTimeout. Its default value is 30 seconds.
You can set this once the command instance has been created. A value of "0" (zero) means the command will wait for completion indefinitely, but this is not recommended by Microsoft. Better to set a large value in seconds.

Unlike ADO, ADO.NET lets you specify the expected behavior of the command through the CommandBehavior enum. Such values specify a description of the results and how the query should affect the data source. In Beta 1, you had a CommandBehavior property to set for each command. Starting with Beta 2, you use values from the CommandBehavior enum only as an argument for ExecuteReader.

Among the other options, you can ask a query command to limit to obtain key and schema information. In this case, the command will be executed without any locking on the selected rows. This behavior is given by the KeyInfo flag. If you have long running queries or multiple threads accessing Sql Server simultaneously,
this can be very helpful.

As an alternative, you might want to obtain column information only, without affecting the database state with locks. This option is SchemaOnly. Another option, SingleResult, lets you specify that you want back only one resultset, no matter how many would originate from the command. In this case, the command returns only the first resultset found. A fourth option is CloseConnection that forces the SqlDataReader object associated with a query command to automatically close the connection as the final step of its Close method.

If you use the SqlHelper "Best practices" class as I do, it might be a good idea to recompile it, setting "cmd.CommandTimeout=howmanyseconds. There are a number of instances of this in the class.

And, as a final caveat, don't call Dispose() on a SqlConnection unless you want to have it removed from the connection pool, because that's what Dispose() does! In almost all cases, you would simple call the Close() method and let ADO.NET take care of returning the connection to the pool.

分享到:
评论

相关推荐

    Sql Server 数据库超时问题的解决方法

    Sql Server 数据库超时问题的解决方法 Sql Server 数据库超时问题是指在使用 Sql Server 数据库时,出现的等待响应时间过长或超时的问题。这种问题可能会导致数据库连接中止、查询失败等问题。 一、Sql Server ...

    Sql Server数据库超时问题的解决方法

    Sql Server数据库超时问题的解决方法 在Sql Server数据库中,超时问题是一个常见的错误,可能会导致数据库的性能下降,影响应用程序的稳定运行。该问题的解决方法可以从多方面入手,包括数据库设计、连接设置、查询...

    SQL数据库超时过期问题的解决方案

    本文将详细介绍 SQL 数据库超时过期问题的解决方案,并对每个问题进行了详细的分析和解决方法。 1. 数据库设计问题造成 SQL 数据库新增数据时超时 症状:Microsoft OLE DB Provider for SQL Server 错误 '80040e31...

    [ODBC_SQL_Server_Driver_]超时已过期的解决过程和方法

    ### ODBC与SQL Server连接超时问题及解决方案 #### 1. 引言 在IT领域,特别是数据库管理和应用开发中,遇到“[ODBC SQL Server Driver] 超时已过期”的错误是较为常见的问题。本文将深入探讨这一问题的根源及其解决...

    SQL 超时解决方案 有时并不是设置问题

    SQL 超时解决方案详解 在数据库操作中, timeout 问题是一个常见的问题,很多开发者都会遇到这个问题。可能大家都知道, Server.scrīptTimeout 可以用来设置超时时间,但是很多人不知道的是,这并不是解决超时问题...

    计算机等考三级数据库辅导:SQLServer4个超时问题的解决方法总结.docx

    SQL Server 超时问题解决方法总结 本文主要讲解了 SQL Server 数据库中常见的 4 个超时问题的解决方法,分别是数据库设计问题导致的新增数据超时、SQL Server 数据库超时设置、查询语句超时和应用程序连接失败。 ...

    SQL Server连接失败错误及解决方法

    在使用 SQL Server 的过程中,用户遇到的最多的问题莫过于连接失败了。一般而言,有以下两种连接 SQL Server 的方式,...下面,我们将就这两种连接方式,具体谈谈如何来解决连接失败的问题。  一、客户端工具连接失败

    SQL2000安装及常见问题解决方法.doc

    SQL Server 2000 安装及常见问题解决方法 SQL Server 2000 是一个功能强大且广泛使用的关系数据库管理系统,它提供了高效、可靠和安全的数据存储和管理解决方案。但是在安装和使用 SQL Server 2000 的过程中,可能...

    C#访问SqlServer设置链接超时的方法

    本篇文章将深入探讨如何在C#中设置访问SQL Server时的链接超时,重点介绍`CommandTimeout`属性的使用。 `CommandTimeout`属性是`SqlCommand`类的一个成员,它定义了SQL Server执行命令的等待时间(以秒为单位)。...

    navicatepremuim连接sqlserver数据库遇到问题及解决方法

    Navicat Premium 连接 SQL Server 数据库遇到问题及解决方法 Navicat Premium 是一个功能强大且功能丰富的数据库管理工具,支持多种数据库管理系统,包括 SQL Server、MySQL、Oracle 等。但是在使用 Navicat ...

    SQL常用错误处理方法

    本文将详细介绍几种常见的SQL错误及其处理方法,帮助大家更好地理解和解决这些问题。 #### SQL2000安装错误 在安装SQL Server 2000过程中可能会遇到各种各样的问题,其中一种常见的问题是安装失败。根据部分内容中...

    oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法

    错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...

    SQLServler自动杀死死锁进程

    在SQL Server数据库管理系统中,...综上所述,理解并掌握SQL Server中自动处理死锁的方法对于维护数据库的稳定性和性能至关重要。通过合理配置和监控,我们可以有效地管理和避免死锁问题,保证数据库系统的高效运行。

    SQL Server 磁盘请求超时的833错误原因及解决方法

    最近遇到一个SQL Server服务器响应极度缓慢,并且出现客户端请求报错的情况,在...SQL Server中的磁盘请求超时  该错误的英文版的错误信息如下:  SQL Server has encountered %d occurrence(s) of I/O requests t

    关于Oracle安装后SQL Developer运行时出现连接失败解决方法

    "Oracle安装后SQL Developer运行时出现连接失败解决方法" 在Oracle安装后,使用SQL Developer连接数据库时可能会出现连接失败的问题。这是由于listener.ora文件中的配置不正确导致的。解决方法是,首先找到Oracle...

    sql表死锁解决办法

    这种情况下,SQL Server 会超时,导致表或者库不可访问。 二、如何找到死锁的进程? 要解决 SQL 表死锁问题,首先需要找到死锁的进程。可以使用以下 SQL 语句来查询当前阻塞进程的 ID: SELECT blocking_session_...

    SQL SERVER 死锁的解决之道

    本文将深入探讨SQL Server死锁的概念、原因、检测方法以及如何有效地解决和预防死锁。 1. **死锁的概念** 死锁是系统资源分配的一种状态,其中两个或更多的事务相互等待对方释放资源,形成一个循环等待链,导致...

    sqlServer 各种疑难杂症和学习资料.rar

    SQL Server 是一款由微软开发的关系型数据库管理系统,广泛应用于企业级数据存储和管理。...学习时,不仅要理论结合实践,还要不断探索和解决实际问题,这样才能更好地掌握SQL Server这一强大的数据库管理系统。

Global site tag (gtag.js) - Google Analytics