Sql 服务器连接字符串中的“连接超时”是什么?

我有以下连接字符串(从 sql server 的属性 get) :

Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\myUser\Desktop\adoBanche\Banche\bin\Debug\banche.mdf;Integrated Security=True;Connect Timeout=30

我不明白什么意思 Timeout=30。有人能解释一下什么意思吗?

279554 次浏览

连接请求与超时错误之间的最大时间。当客户端尝试建立连接时,如果达到超时等待限制,它将停止尝试并引发错误。

这是对 创造连接的超时,而不是对执行 结束了连接的命令的超时。

例如,请参见 < a href = “ http://www.connectionstrings.com/all-sql-server-connect-string-keywords/”rel = “ norefrer”> http://www.connectionstrings.com/all-sql-server-connection-string-keywords/ (请注意,该属性是“ Connect Timeout”(或“ Connection Timeout”) ,而不仅仅是“ Timeout”)


评论中写道:

不可能通过连接字符串设置命令超时。但是,SqlCommand 有一个 指挥暂停属性(从 DbCommand 派生) ,您可以在该属性中为每个命令设置超时(秒)。

请注意,当使用 Read()在查询结果上循环时,每次读操作都会重置超时。超时是针对每个网络请求,而不是针对整个连接。

获取在尝试建立连接时等待的时间,然后终止尝试并生成错误。 (MSDN,SqlConnection. ConnectionTimeout 属性,2013)

获取在尝试建立连接时等待的时间,然后终止尝试并生成错误。

Http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout%28v=vs.110%29.aspx

Connect Timeout=30意味着,在30秒内 sql 服务器应该建立连接。否则当前连接请求将被取消。

Connection Timeout = 30 意味着数据库服务器有30秒建立连接。

Connection Timeout 指定时间限制(以秒为单位) ,在此期间必须建立到指定服务器的连接,否则将引发异常,即。它指定在建立数据库连接时允许程序暂停多长时间。

DataSource=server;
InitialCatalog=database;
UserId=username;
Password=password;
Connection Timeout=30

SqlConnection.ConnectionTimeout 连接超时。 指定 SQLServer 服务响应连接尝试的时间。这始终被设置为连接字符串的一部分。

备注:

  • 该值以秒表示,而不是以毫秒表示。

  • 默认值为30秒。

  • 值为0意味着无限期等待,永远不超时。

此外,< em > SqlCommand. CommandTimeout 指定在 SQL Server 上运行的特定查询的超时值,但是这是通过 SqlConnection 对象/设置设置的(取决于您的编程语言) ,而不是在连接字符串中设置的。它指定在运行命令时允许程序暂停多长时间。

默认情况下,连接超时是240,但是如果您面临连接超时的问题,那么您可以增加到“300” “连接超时 = 300”

简而言之,连接是如何工作的

程序和数据库服务器之间的连接依赖于握手。

这意味着,当连接打开时,建立连接的线程将向数据库服务器发送网络数据包。然后,此线程将暂停,直到从数据库服务器接收到关于此连接的网络数据包或连接超时过期为止。

连接超时

连接超时是从打开连接的点开始计算的,以秒为单位。

当超时过期时,线程将继续运行,但是它将在报告连接失败后继续运行。

  • 如果在连接字符串中没有为连接超时指定值,则 默认值是30

  • 大于0 的值表示放弃前的几秒钟,例如,值为10表示等待10秒。

  • 值0 表示永远不要放弃等待连接

注意: 不建议值为0,因为连接请求数据包或服务器响应数据包都可能丢失。你真的准备好等待哪怕一天的答复,而这个答复可能永远不会到来吗?

我应该将连接超时值设置为什么?

此设置应取决于网络的速度以及允许线程等待响应的时间。

例如,在一个每小时重复一次的任务中,我知道我的网络总是在一秒钟内响应,所以为了安全起见,我将连接超时设置为2。然后我会在放弃之前再试三次,要么增加一张支持票,要么增加一张类似的现有支持票。

测试您自己的网络速度,并考虑当连接一次性失败时,以及当连接重复和偶尔失败时,应该做什么。