提问人:Greasul 提问时间:11/10/2023 最后编辑:Greasul 更新时间:11/10/2023 访问量:44
如何缩短 SQL 连接超时
How to make SQL connection timeout shorter
问:
我正在处理我的小项目,并尝试将我的 Windows 窗体应用程序连接到 SQL Server。 这是我的连接类的代码:
public class DatabaseConnection
{
private string connectionString;
private SqlConnection connection;
public DatabaseConnection()
{
connectionString = "Data Source=xxx.xxx.x.x;Initial Catalog=xxxxxx;User ID=xxxxxx;Password=xxxxxxxx;Connect Timeout=5";
connection = new SqlConnection(connectionString);
}
public bool OpenConnection()
{
try
{
connection.Open();
return true;
}
catch (Exception)
{
connectionString = "Data Source=xxxxxxxxxxxx;Initial Catalog=xxxxxxx;User ID=xxxxxxx;Password=xxxxxxxx;Connect Timeout=5";
connection = new SqlConnection(connectionString);
try
{
connection.Open();
return true;
}
catch (Exception)
{
return false;
}
}
}
public void CloseConnection()
{
connection.Close();
}
public SqlConnection GetConnection()
{
return connection;
}
}
我试图将连接超时设置为 5 秒而不是 30 秒,因为当我加载我的应用程序并且它试图通过第一个 IP 连接并失败时,它等待 30 秒服务器发送错误,然后尝试通过第二个 IP 连接。 我的问题是如何使延迟时间达到 5 秒
我尝试了不同的方法,首先是向连接字符串添加连接超时属性:connectionString = "Data Source=xxxxxxxxx;Initial Catalog=xxxxx;User ID=xxxxxx;Password=xxxxxxxxxx;Connect Timeout=5";
第二种方法是将锁定超时设置为 5000 毫秒之前connection.open()
try
{
using (SqlCommand command = new SqlCommand("SET LOCK_TIMEOUT 5000", connection))
{
connection.Open();
}
return true;
}
答:
0赞
Aaron
11/10/2023
#1
首先,如果您在公共论坛上发布密码、IP、用户名等,您应该屏蔽它们。
但是,回到您的问题:连接字符串中包含错误的属性
connectionString = "Data Source=XX.XXX.XXX:XXX;Initial Catalog=Hotsiy_NP;User ID=XXXX;Password=XXXXXXX;Connection Timeout=5";
它的连接超时不是连接超时: 请参阅 https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectiontimeout?view=dotnet-plat-ext-7.0 以供参考
评论
0赞
Greasul
11/10/2023
我找到了答案,谢谢
0赞
Jiji
11/11/2023
@Greasul,如果您找到了答案,请在此处发布,以便任何面临此类问题的人也可以从您的解决方案中受益。谢谢!
评论
MultiSubnetFailover=true
LOCK_TIMEOUT