连接到SQLServer时,有时工作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (195)

ADO.NET应用程序有时只能连接到本地网络上的另一台服务器。给定连接尝试是否成功似乎是随机的。该连接使用表单中的连接字符串:

返回的错误是:

Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement.

This could be because the pre-login handshake failed or the server was unable to respond back in time.

The duration spent while attempting to connect to this server was - [Pre-Login] initialization=42030; handshake=0;

.NET应用程序是一个小型测试应用程序,它执行以下代码:

using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn))
{
    conn.Open();
    int rowCount = (int)cmd.ExecuteScalar();
}

很小,只有78行。

为什么ADO.NET应用程序的连接会失败,但是通过来自SSMS的相同凭据成功呢?

提问于
用户回答回答于

若要为其他IP地址启用TCP/IP,请执行以下操作:

  • 启动SQLServer配置管理器
  • 打开节点SQLServer网络配置
  • 单击MYSQLINSTANCE协议
  • 在右侧窗格中,右击tcp/ip。
  • 单击属性
  • 选择IP地址选项卡
  • 对于每个列出的IP地址,确保活动和启用都是是的。
用户回答回答于

可以:

ConnectionString="Data Source=xyz;Initial Catalog=xyz;Integrated Security=True;Connection Timeout=30;"

在我的情况下,唯一受影响的连接是使用集成安全性的连接,而且在连接之前我正在模拟用户,其他使用SQL身份验证连接到同一服务器。

扫码关注云+社区

领取腾讯云代金券