ADO.Net应用程序有时只能连接到本地网络上的另一台服务器。给定的连接尝试成功或失败似乎是随机的。该连接使用以下形式的连接字符串:
Server = THESERVER \ TheInstance; Database = TheDatabase; User Id = TheUser; 密码=密码
返回的错误是:
连接超时已过期。尝试使用登录前握手确认时,超时时间已过。
这可能是因为登录前的握手失败或服务器无法及时回复。
尝试连接到该服务器所花费的时间为-[登录前]初始化= 42030;握手= 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();
}
TheTable很小,只有78行。
但是,在.NET应用程序收到此错误的同一台计算机上,我能够使用SSMS和连接字符串中指定的用户ID /密码连接到THESERVER。
为什么连接可能会因ADO.Net应用程序而失败,但是使用来自SSMS的相同凭据成功完成?