【问题标题】:SqlException takes too long to appearSqlException 出现时间过长
【发布时间】:2019-11-19 06:06:38
【问题描述】:

我正在测试一种方法来更改我的 app.config 文件的连接字符串,然后检查连接是否正确。

问题在于,当连接字符串无效或找不到服务器时,触发异常大约需要 10 秒。

这正常吗?

我的项目包含在 C# 和 SQL Server Express 中的 Windows 窗体应用程序中。服务器位于我本地网络内的本地计算机中。我在服务器电脑上试过同样的代码,延迟是一样的。

private void boton1_Click(object sender, EventArgs e)
    {
        using(SqlConnection con=new SqlConnection(connectionStringsSection.ConnectionStrings["Default"].ConnectionString))
        {
            con.Open();
        }
    }

【问题讨论】:

  • 是的。当服务器名称不容易找到时,它会搜索并搜索它。确定找不到服务器需要一些时间。
  • 我明白了!非常感谢您;我已经修改了连接字符串中的连接超时;现在延迟更小了。

标签: c# sql-server


【解决方案1】:

正如SqlConnectionStringBuilder 的 C# 文档中所述,连接超时是可以根据您的特定需要进行配置的。根据他们在我本地机器上的示例代码,默认超时时间为 15 秒,但您可以根据需要进行设置。也许在您的用例中,1 秒的超时就可以了,因为您知道连接是本地的,并且不需要更长的等待时间。但是,任何外部连接都应该有一个更大的超时窗口,以解决路由问题、服务器负载等问题。

SqlConnectionStringBuilder 类有许多属性可以在这方面有所帮助,但我在下面概述了特定于您的情况的属性:

var csb = new SqlConnectionStringBuilder
{
    ConnectionString = connectionStringsSection.ConnectionStrings["Default"].ConnectionString,
    ConnectRetryCount = 0,
    ConnectRetryInterval = 0,
    ConnectTimeout = 0
};

【讨论】:

  • 非常感谢!我不知道。我将超时设置为 3 秒左右,我有点担心以后的查询会花费超过 1 秒,但我会尝试。
猜你喜欢
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 2016-03-03
  • 2016-09-10
  • 2013-09-21
相关资源
最近更新 更多