Delphi写的备份数据库程序备份时出现“超时已过期”解决办法

2017-08-21 20:22:15来源:CSDN作者:zisongjia人点击

分享

原因:

    ADOconnection 的commandtimeout属性设置的时间太小(以秒做单位)

解决办法:

    将其设置为0(无时间限制),就可以了

针对数据库:

    主要是sql2000会出现“超时已过期”

更过超时详解:

每次对数据库连接时,我们有时候会碰到连接超时或者命令超时,这两个超时是不一样的。以ADO.NET为例,当客户端和服务器端连接时,碰到的超时情况主要有下面几种:


当从连接池获取一个连接时,碰到超时。


当建立一个全新连接(而不是从连接池获取)时,碰到超时。


当发送一个命令(command)到SQL Server时,超时。


当发送命令(连接字符串带有“context connection=true”属性)到SQL Server时,超时。


当不是显示的发送一个命令(implicitly)到SQL Server时,碰到超时。


当执行异步命令时,(BeginExecute)碰到超时。


当从服务器端,获取行时,碰到超时。


当用Bulk copy方式,上传数据时,碰到超时。


这些超时主要是通过连接字符串中的Connect Timeout和SqlCommand.CommandTimeout来进行控制。前面两种是登录超时由Connection Timeout来决定什么时候超时,后面几种是命令超时由Command Timeout来决定什么时候超时。


SqlConnection.ConnectionTimeout : 
1. 说明: 获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。
2. 默认值:等待连接打开的时间(以秒为单位)。默认值为 15 秒。
3. 备注:值 0 指示无限制
4. 只读


SqlCommand.CommandTimeout 
1. 说明:获取或设置在终止执行命令的尝试并生成错误之前的等待时间。
2. 默认值:等待命令执行的时间(以秒为单位)。默认为 30 秒。
3. 备注:值 0 指示无限制,在 CommandTimeout 中应避免值 0,否则会无限期地等待执行命令。
4. 可读可写


特别注意:
"超时时间已到。在操作完成之前超时时间已过或服务器未响应"
类似这种错误,一般是 SqlCommand.CommandTimeout  或者 SqlBulkCopy.BulkCopyTimeout 的时间超时, 而不是 SqlConnection.ConnectionTimeout。


更过Delphi技术交流请加QQ:2609715119

  非诚勿扰!!!

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台