我在C#中使用SqlConnection,并使用sqlconnection.Open()
打开到MSSQL上运行的VM的连接。如果凭据正确,则连接将在不到一秒钟的时间内可用。但是如果该数据库不可用,导致长时间的超时(约45秒)。
这就是为什么我将连接字符串Connection Timeout={Timeout}
添加到连接字符串sqlConnection.ConnectionTimeout
的原因,因为connectionstring = $@"Server={Ip};Database={DbName};User Id={Username};Password={Password};Connection Timeout={Timeout}";
using (SqlConnection sqlConnection = new SqlConnection(connectionString))
{
try {
Debug.WriteLine(DateTime.Now + "Open Connection");
sqlConnection.Open();
}
catch
{
Debug.WriteLine(DateTime.Now + "Connection failed");
}
}
等于我设置的超时时间。
我将超时设置为5秒,并尝试连接到不存在的数据库。不幸的是,超时时间比我预期的要长。
20/06/2018 08:04:39:打开连接
20/06/2018 08:05:11:连接失败
我的目标是在ca之后断开连接。 10秒。
TL; DR; 我可以影响超时吗?如果这不可能, 为什么超时约32秒。即使我将超时设置为5秒。
编辑:
ConnectRetryCount=0;ConnectRetryInterval=1;
编辑2:
我在连接字符串中添加了fun
,它没有做任何更改。
答案 0 :(得分:0)
https://stackoverflow.com/a/50944424/5507322-很好,但这并非在所有情况下都有效。
上述原因并不总是有效的原因和解决方案: http://improve.dk/controlling-sqlconnection-timeouts/