我检查连接是否可用代码:
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;
}
当连接不可用时,需要很长时间才能回答。如何减少连接?
答案 0 :(得分:1)
你可以通过这种方式检查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;
}
答案 1 :(得分:1)
如果您要连接到SQL Server,可以先尝试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
}
系统管理员可能会禁用/阻止ICMP流量,因此此选项可能不适用于每个服务器。
答案 2 :(得分:1)
不要ClearAllPools
!连接池专门用于提高连接效率。当您Open()
使用池中的连接时(如果有)。当你Close()
将它返回到游泳池但没有被销毁时,只需等待某人再次使用它。