ADO.NET:更快速地检查数据库服务器是否可访问?

use*_*094 5 c# database connection ado.net

目前我正在使用此代码检查数据库是否可访问:

public bool IsDatabaseOnline(string con)
{
    bool isConnected = false;
    SQLConnection connect = null;

    try {
        connect = new SQLConnection(con);
        connect.Open();
        isConnected = true;

    } catch (Exception e) {
        isConnected = false;

    } finally {
        if (connect != null)
            connect.Close();
    }

    return isConnected;
}
Run Code Online (Sandbox Code Playgroud)

虽然这段代码工作正常但是有一个缺点.如果服务器不在线,它会花费大约4整秒的时间尝试打开连接,然后再决定它是否可用.

有没有办法测试连接而不试图实际打开它并等待超时?像数据库相当于ping的东西?

Mat*_*son 3

您只需将连接超时更改得更短即可。做一些测试,看看你可以降到多低并且仍然可靠。我打赌你可以接近 500 毫秒。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx

  • 如果“ConnectionTimeout”以秒为单位,那么如何指定 500 毫秒? (3认同)