【问题标题】:What is "Connect Timeout" in sql server connection string?什么是 sql server 连接字符串中的“连接超时”?
【发布时间】:2013-11-22 10:36:59
【问题描述】:

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

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

我不明白Timeout=30 是什么意思。谁能解释一下是什么意思?

【问题讨论】:

  • 如果在 30 秒内未连接,则退出尝试。

标签: sql sql-server


【解决方案1】:

这是创建连接的超时时间,而不是通过该连接执行的命令的超时时间。

例如见http://www.connectionstrings.com/all-sql-server-connection-string-keywords/ (注意属性是“Connect Timeout”(或“Connection Timeout”),而不仅仅是“Timeout”)


来自cmets:

无法通过连接字符串设置命令超时。但是,SqlCommand 有一个CommandTimeout 属性(派生自 DbCommand),您可以在其中设置每个命令的超时时间(以秒为单位)。

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

【讨论】:

  • 从链接我可以推断 不可能从连接字符串设置命令超时。我们只能设置连接超时。
  • 但是可以使用SqlCommand.CommandTimeout 属性(以秒为单位)设置命令超时。 msdn.microsoft.com/en-us/library/…
【解决方案2】:

Connection Timeout=30表示数据库服务器有30秒的时间建立连接。

Connection Timeout 指定时间限制(以秒为单位),在该时间限制内必须建立与指定服务器的连接,否则将引发异常,即它指定您将允许您的程序运行多长时间在建立数据库连接时被挂起。

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

SqlConnection.ConnectionTimeout. 指定 SQL Server 服务响应连接尝试的秒数。这始终设置为连接字符串的一部分。

注意事项:

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

  • 默认值为 30 秒。

  • 值为 0 表示无限期等待且永不超时。

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

【讨论】:

【解决方案3】:

Connect Timeout=30 表示sql server 30秒内应该建立连接,否则当前的连接请求将被取消,用于避免连接尝试无限期等待。

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      简述连接的工作原理

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

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

      连接超时

      连接超时从连接打开的那一刻起以秒为单位。

      当超时到期时,线程将继续,但它会报告连接失败。

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

      • 大于零的值表示放弃前多少秒,例如值为 10 表示等待 10 秒。

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

      注意:不建议使用 0 值,因为连接请求数据包或服务器响应数据包都可能丢失。你会认真准备好等待一天的回复吗?

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

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

      例如,在一天中每小时重复一次的任务中,我知道我的网络总是在一秒钟内做出响应,因此为了安全起见,我将连接超时值设置为 2。然后,我将再试三次,然后放弃并提出支持票证或升级类似的现有支持票证。

      测试您自己的网络速度,并考虑当连接失败时该怎么办,以及当它反复和偶尔失败时。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            默认连接超时为 240,但如果您遇到连接超时问题,则可以增加到“300” “连接超时=300”

            【讨论】:

            • 默认值为30秒
            猜你喜欢
            • 1970-01-01
            • 2010-10-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-21
            • 1970-01-01
            相关资源
            最近更新 更多