大家好我有以下连接字符串(从SQL服务器的属性获取):
Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\myUser\Desktop\adoBanche\Banche\bin\Debug\banche.mdf;Integrated Security=True;Connect Timeout=30
Run Code Online (Sandbox Code Playgroud)
我不明白是什么意思Timeout=30.有人能解释一下是什么意思吗?
Han*_*ing 56
这是创建连接的超时,而不是通过该连接执行的命令的超时.
例如,参见http://www.connectionstrings.com/all-sql-server-connection-string-keywords/ (注意该属性是"连接超时"(或"连接超时"),而不仅仅是"超时")
连接超时= 30表示数据库服务器有30秒建立连接.
连接超时指定必须与指定服务器建立连接的时间限制(以秒为单位),否则抛出异常,即它指定在建立数据库连接时允许程序保持多长时间.
DataSource=server;
InitialCatalog=database;
UserId=username;
Password=password;
Connection Timeout=30
Run Code Online (Sandbox Code Playgroud)
SqlConnection.ConnectionTimeout.指定SQL Server服务响应连接尝试的秒数.这始终设置为连接字符串的一部分.
笔记:
该值以秒为单位表示,而不是以毫秒为单位.
默认值为30秒.
值0表示无限期等待,永不超时.
此外,SqlCommand.CommandTimeout指定在SQL Server上运行的特定查询的超时值,但是这是通过SqlConnection对象/设置(取决于您的编程语言)设置的,而不是在连接字符串中设置,即它指定您将使用多长时间允许在运行命令时保持程序.
简而言之,连接是如何工作的
程序和数据库服务器之间的连接依赖于握手。
这意味着当打开连接时,建立连接的线程将向数据库服务器发送网络数据包。然后,该线程将暂停,直到从数据库服务器收到有关此连接的网络数据包或连接超时到期。
连接超时
连接超时以连接打开后的秒数为单位。
当超时到期时,线程将继续,但它会报告连接失败。
如果连接字符串中没有指定连接超时值,则默认值为 30。
大于零的值表示放弃前多少秒,例如,值 10 表示等待 10 秒。
值为 0表示永不放弃等待连接
注意:不建议使用 0 值,因为连接请求数据包或服务器响应数据包可能会丢失。您是否愿意认真准备等待一天,以获得可能永远不会到来的答复?
我应该将连接超时值设置为多少?
此设置应取决于您的网络速度以及您准备允许线程等待响应的时间。
举个例子,对于白天每小时重复一次的任务,我知道我的网络总是在一秒内响应,因此为了安全起见,我将连接超时设置为 2。然后,我会再试三次,然后放弃并提出支持请求或升级类似的现有支持请求。
测试您自己的网络速度,并考虑当连接一次性失败以及重复和零星地失败时该怎么办。
| 归档时间: |
|
| 查看次数: |
126008 次 |
| 最近记录: |