SQL服务器的连接超时

我可以通过修改web.config的连接string来增加超时吗?

是的,你可以追加;Connection Timeout=30到你的连接string,并指定你想要的值。

Connection Timeout属性中设置的超时值是以秒为单位的时间 。 如果未设置此属性,则连接的超时值是默认值(15秒)。

而且,将超时值设置为0 ,则表示您的连接尝试等待无限时间。 正如文档中所述,这是你不应该在你的连接string中设置的东西:

值为0表示没有限制,应该避免在ConnectionString中,因为连接尝试无限期地等待。

嗯…

正如Darin所说,你可以指定一个更高的连接超时值,但是我怀疑这确实是个问题。

当您连接超时时,通常是以下其中一个问题:

  1. networkingconfiguration – 您的Web服务器/开发盒和SQL服务器之间的连接速度很慢。 增加超时可能会纠正这个问题,但调查潜在的问题是明智的。

  2. 连接string。 我遇到了一些问题,由于某些原因,不正确的用户名/密码会出现超时错误,而不是真正的错误,指示“访问被拒绝”。 这不应该发生,但这就是生活。

  3. 连接string2:如果您错误地或不完整地指定了服务器的名称(例如, mysqlserver而不是mysqlserver.webdomain.com ),则会发生超时。 你可以使用服务器的名称完全按照命令行连接string中的指定来ping服务器吗?

  4. 连接string3:如果服务器名称在您的DNS(或主机文件)中,但指向一个不正确或无法访问的IP,您将得到一个超时,而不是一个机器找不到ish错误。

  5. 您正在调用的查询超时。 它可能看起来像连接到服务器是问题,但是,根据您的应用程序的结构,您可以在超时发生之前一直到执行查询的阶段。

  6. 连接泄漏。 有多less个进程正在运行? 多less个开放的连接? 我不确定原始ADO.NET是否执行连接池,在必要时自动closures连接ala Enterprise Library,或者所有configuration的位置。 这可能是一个红鲱鱼。 在使用WCF和Web服务时,我遇到了未closures连接的问题,导致超时和其他不可预知的行为。

试一试:

  1. 使用SQL Management Studio连接到服务器时会发生超时吗? 如果是这样,networkingconfiguration可能是问题。 如果在连接Management Studio时看不到问题,则问题将出现在应用程序中,而不是服务器上。

  2. 运行SQL事件探查器,并查看实际发生的事情。 你应该能够知道你是否真正连接,或者如果查询是问题。

  3. 在Management Studio中运行您的查询,并查看需要多长时间。

祝你好运!

如果你想dynamic地改变它,我更喜欢使用SqlConnectionStringBuilder

它允许你将ConnectionString(即一个string)转换成类Object,所有的连接string属性将成为它的成员。

在这种情况下,真正的好处是你不必担心如果ConnectionTimeoutstring部分已经存在于连接string中或者没有?

同样,因为它创build一个对象,它总是很好的分配对象的价值,而不是操纵string。

这是代码示例:

 var sscsb = new SqlConnectionStringBuilder(_dbFactory.Database.ConnectionString); sscsb.ConnectTimeout = 30; var conn = new SqlConnection(sscsb.ConnectionString);