如何减少打开连接的等待时间?
How to reduce waiting time for open connection?
我用代码检查连接是否可用:
SqlConnection objConnection = new SqlConnection(string.Concat(connectionString));
try
{
objConnection.Open(); // this line make wait time if connection not available
objConnection.Close();
SqlConnection.ClearAllPools();
return true;
}
catch
{
return false;
}
当连接不可用时,需要很长时间才能回答。如何减少它?
您可以通过这种方式检查sql连接,这不会花很长时间
SqlConnection objConnection = new SqlConnection(string.Concat(connectionString));
try
{
objConnection.Open();
}
catch {}
if (objConnection != null && objConnection.State == ConnectionState.Open)
{
try
{
objConnection.Close();
}
catch {}
return true;
}
else if (objConnection != null && objConnection.State == ConnectionState.Closed)
{
try
{
objConnection.Close();
}
catch {}
return false;
}
如果您要连接到 SQL 服务器,您可以先尝试 Ping
服务器。在我的盒子上,ping 只需要 5 秒就可以得出无法访问服务器的结论。此代码段中显示了利用该功能的最简单代码:
if(new System.Net.NetworkInformation.Ping().Send("Your servername here").Status !=
System.Net.NetworkInformation.IPStatus.TimedOut)
{
// server reachable, try a real SQL Server connection now
SqlConnection objConnection = new SqlConnection(connectionstring);
try
{
objConnection.Open(); // this line make wait time if connection not available
objConnection.Close();
// not sure why you would want this
// only use if you want worse performance
// SqlConnection.ClearAllPools();
return true;
}
catch
{
return false;
}
}
else
{
return false; // PING failed
}
系统管理员可能 disable/block ICMP 流量,因此此选项可能不适用于所有服务器。
不要ClearAllPools
!连接池就是专门用来让连接更有效率的。当您 Open()
使用池中的连接(如果有的话)。当你Close()
它返回到池中但没有销毁,只是等待有人再次使用它。
我用代码检查连接是否可用:
SqlConnection objConnection = new SqlConnection(string.Concat(connectionString));
try
{
objConnection.Open(); // this line make wait time if connection not available
objConnection.Close();
SqlConnection.ClearAllPools();
return true;
}
catch
{
return false;
}
当连接不可用时,需要很长时间才能回答。如何减少它?
您可以通过这种方式检查sql连接,这不会花很长时间
SqlConnection objConnection = new SqlConnection(string.Concat(connectionString));
try
{
objConnection.Open();
}
catch {}
if (objConnection != null && objConnection.State == ConnectionState.Open)
{
try
{
objConnection.Close();
}
catch {}
return true;
}
else if (objConnection != null && objConnection.State == ConnectionState.Closed)
{
try
{
objConnection.Close();
}
catch {}
return false;
}
如果您要连接到 SQL 服务器,您可以先尝试 Ping
服务器。在我的盒子上,ping 只需要 5 秒就可以得出无法访问服务器的结论。此代码段中显示了利用该功能的最简单代码:
if(new System.Net.NetworkInformation.Ping().Send("Your servername here").Status !=
System.Net.NetworkInformation.IPStatus.TimedOut)
{
// server reachable, try a real SQL Server connection now
SqlConnection objConnection = new SqlConnection(connectionstring);
try
{
objConnection.Open(); // this line make wait time if connection not available
objConnection.Close();
// not sure why you would want this
// only use if you want worse performance
// SqlConnection.ClearAllPools();
return true;
}
catch
{
return false;
}
}
else
{
return false; // PING failed
}
系统管理员可能 disable/block ICMP 流量,因此此选项可能不适用于所有服务器。
不要ClearAllPools
!连接池就是专门用来让连接更有效率的。当您 Open()
使用池中的连接(如果有的话)。当你Close()
它返回到池中但没有销毁,只是等待有人再次使用它。