15

我正在通过我的 ASP .NET 应用程序连接到 MSSQL 数据库,但有时在打开连接时出现此错误。

连接超时已过期。尝试使用登录前握手确认时超时时间已过。这可能是因为登录前握手失败或服务器无法及时响应。尝试连接到此服务器所花费的持续时间是 - [Pre-Login] 初始化 = 3;握手=14996;

为了暂时解决它,我必须重新启动 IIS。我正在使用此代码片段连接到 MSSQL:

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();

            /* my commands here */

            connection.Close();
            connection.Dispose();
            SqlConnection.ClearPool(connection);
        }

我在入站和出站规则中允许了端口 1433,但没有更改。当我按照那里的说明进行操作时:

但没有任何改变。

4

2 回答 2

4

根据 MSDN 文档。

ClearPool 清除与连接关联的连接池。如果在调用时与连接关联的其他连接正在使用中,它们会被适当地标记并在对其调用 Close 时被丢弃(而不是返回到池中) .

你应该在 connection.close 之前使用 ClearPool 方法

参考:https ://msdn.microsoft.com/zh-tw/library/system.data.sqlclient.sqlconnection.clearpool(v=vs.110).aspx

如果你使用 Using 语法来管理 Object 你不应该使用 connection.close 方法

因为当他们跑到 end 时它会调用。只需打开您的连接并执行您的命令

 using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        SqlConnection.ClearPool(connection);
        /* my commands here */
        SqlCommand cmd = new SqlCommand("your command",conn);
        cmd.ExecuteReader()


    }

参考示例:https ://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

最后确保 SQL Server 网络配置正确

在此处输入图像描述

在此处输入图像描述

于 2016-10-07T05:43:43.153 回答
1

对我来说,诀窍是增加连接字符串的超时时间,因为当通过 vpn 连接时,建立连接需要很长时间。您可以通过添加 ;connection timeout = value 来做到这一点

当我在 vpn 上连接应用程序尝试连接到 sql server 时,我遇到了同样的错误。

默认情况下,超时设置为 15 秒。

希望能帮助到你!

于 2018-06-11T20:23:03.460 回答