首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sql连接等待15秒,尽管连接字符串中的超时时间为3秒。

Sql连接等待15秒,尽管连接字符串中的超时时间为3秒。
EN

Stack Overflow用户
提问于 2010-06-24 21:35:53
回答 3查看 10.8K关注 0票数 6

我有一个通过本地网络使用Microsoft 2008服务器的网站。有时,会重新启动SQL server机器,因此网站无法连接到数据库。如果机器启动并运行,它就会反应得很快。如果它坏了,就没必要等15秒了。3秒就可以了。

当数据库无法到达时,我想在网站上显示道歉,并且想要快速地做到。但是,在连接字符串中设置Connection Timeout=3似乎没有任何效果。页面花费22秒等待,然后在SqlConnection.Open();上抛出SqlConnection.Open();

它有什么问题?它是否是一个隐藏的配置,可以覆盖超时?

当前,我的连接字符串是

代码语言:javascript
复制
Data Source=...;
Initial Catalog=...;
Integrated Security=True;
Connection Timeout=3

如果我将其设置为...;ConnectionTimeout=3 (没有空格),

代码语言:javascript
复制
System.ArgumentException: Keyword not supported: 'connectiontimeout'.

抛出(奇怪的是,MSDN文档表示我们可以使用这两个字符串)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-28 20:22:00

在网络硬件向网络驱动程序报告连接超时之前存在超时,而网络驱动程序则会通知等待网络IO的程序。您可以通过1433验证传输层超时(假设您的sql服务器正在监听端口1433)。

但是,对于一个进程来说,3秒时间太短,无法初始化网络API(假设您的web应用程序位于它自己的应用程序池中)、发送请求并等待硬件超时。更新BIOS/固件/驱动程序可能不会大大减少响应时间。

最好是异步地执行连接。我不建议使用EndInvoke来结束异步调用,因为当数据库关闭时,不幸的用户可能还需要等待整整3秒才能看到任何响应。也许Ajax调用更好。如果您有很多用户经常访问您的网站,您可能希望缓存连接检查的结果,并以对用户有意义的方式更新它。

票数 2
EN

Stack Overflow用户

发布于 2013-09-10 04:43:15

下面的博客文章帮助我解决了这个问题:http://improve.dk/controlling-sqlconnection-timeouts/

票数 2
EN

Stack Overflow用户

发布于 2010-06-24 21:48:17

没有空格的ConnectionTimeout是通过代码访问时的属性名,而不是连接字符串的属性名。

不确定这是否有用,但当我过去遇到这个问题时,这是因为我还需要设置SqlCommand.CommandTimeout。对我来说,所发生的是连接被成功地打开,然后DB服务器崩溃,然后我的下一个命令没有按照我预期的速度根据连接超时超时,这也是由于需要设置CommandTimeout

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3114051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档