您的位置:首页 > 数据库

超时时间已到。在操作完成之前超时时间已过或服务器未响应。 (.Net SqlClient Data Provider)

2008-06-01 02:55 381 查看
在做一个小东西的时候出现了这个问题,就是使用VS调试几次项目后,使用SQL Server Management Studio管理数据库时,使用SA登录就会出现这个错误,当然,如果项目中的数据库连接字符串中使用的sa验证,那么项目也会连不到数据库的.可是如果是在 Server Management Studio和项目中使用Windows身份验证,就没有任何问题.

提示错误消息如下

超时时间已到。在操作完成之前超时时间已过或服务器未响应。 (.Net SqlClient Data Provider)

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

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=-2&LinkId=20476
------------------------------

服务器名称: ZY-CQU

错误号: -2

严重性: 11

状态: 0

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

程序位置:

初步推断可能是由于我的那个DBAcess类没有正确的关闭数据库连接吧.在网上搜了一通,也没有什么实质性的进展

这里有一个帖子(点我看帖子)反映的情况好像和我的类似,可是他没有说具体的解决方案,仅仅提到优化了一下存储过程

CSDN这里有一个类似问题(点我看原文)大意就是说要把TimeOut时间设的长一点,可是我的不是这个原因

初步分析原因为对MSSQL操作时连接超时,知道这事,以前没留意,大概是在配置文件中设置连接时限,在网上找了下解决方法,大多说在数据库连接字符串里解决

SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=password;")
改为:

SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=password;Connect Timeout=500")
似乎没效果。依然运行30秒即报超时!

突然感觉似乎应该可以在连接数据库代码中指明,式了下con的属性,有个ConnectionTimeout,

SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=;");

con.ConnectionTimeout = 180;//报错,属性ConnectionTimeout 为只读!
尝试失败,再接着看command对象属性,发现其也有类似属性!CommandTimeout设置一下:

SqlCommand cmd = new SqlCommand();

cmd.CommandTimeout = 180;
再运行,即解决,这里设置的时间的180秒,即三分钟!可根据需要设置,如果过长,也可以设置为0,当此属性设置为0时表示不限制时间。此属性值应该慎用。还需要在Web.config配置文件中设置http请求运行时限间

<system.web>

<httpRuntime maxRequestLength="102400" executionTimeout="720" />

</system.web>
这里设置的为720秒,前面的属性maxRequestLength一般用于用户上传文件限制大小!默认一般为4096 KB (4 MB)。

到底是怎么回事呢,现在也没有搞定,所以我只能是认为我的那个DBAcess类的问题了,所以把它贴出来大家分析,看看原因,希望有人帮我解答一下,代码比较长,不想在网页上看的我提供了下载 (点我下载)
using System;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

public class DBAccess
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐