Tôi có đoạn code sau đây để kiểm tra kết nối DB, nó chạy theo định kỳ để kiểm tra DB sẵn:Làm thế nào để kiểm tra tính sẵn sàng cơ sở dữ liệu
private bool CheckDbConn()
{
SqlConnection conn = null;
bool result = true;
try
{
conn = DBConnection.getNewCon();
ConnectionState conState = conn.State;
if (conState == ConnectionState.Closed || conState == ConnectionState.Broken)
{
logger.Warn(LogTopicEnum.Agent, "Connection failed in DB connection test on CheckDBConnection");
return false;
}
}
catch (Exception ex)
{
logger.Warn(LogTopicEnum.Agent, "Error in DB connection test on CheckDBConnection", ex);
return false; // any error is considered as db connection error for now
}
finally
{
try
{
if (conn != null)
{
conn.Close();
}
}
catch (Exception ex)
{
logger.Warn(LogTopicEnum.Agent, "Error closing connection on CheckDBConnection", ex);
result = false;
}
}
return result;
}
Và:
static public SqlConnection getNewCon()
{
SqlConnection newCon = new SqlConnection();
newCon.ConnectionString = DBConnection.ConnectionString; // m_con.ConnectionString;
newCon.Open();
return newCon;
}
Câu hỏi của tôi là: sẽ này làm việc như mong đợi?
Cụ thể, tôi quan tâm đến việc kiểm tra số ConnectionState
. Có thể nhà nước sẽ: kết nối (kể từ Open()
là đồng bộ)?
Tôi nên làm gì trong trường hợp đó?
Xin cảm ơn trước, Omer
nếu l_oConnection.Close(); sẽ ném một ngoại lệ trong khối cuối cùng? –
sử dụng ... đóng và ngắt kết nối, không cần phải đóng rồi – Steve
Tôi đã sử dụng tính năng này nhưng thấy nó trả về true trong lần gọi đầu tiên sau khi cơ sở dữ liệu được đưa vào ngoại tuyến. Điều này đã được sử dụng. Net 3.5 chống lại một máy chủ sql 2012 db. – monty