У меня есть следующий код, чтобы проверить DB соединение, она периодически запускается для проверки БД наличие:Как проверить наличие базы данных
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;
}
И:
static public SqlConnection getNewCon()
{
SqlConnection newCon = new SqlConnection();
newCon.ConnectionString = DBConnection.ConnectionString; // m_con.ConnectionString;
newCon.Open();
return newCon;
}
Мой вопрос: будет ли это работайте, как ожидалось?
В частности, я заинтересован в проверке ConnectionState
. Возможно ли, что состояние будет: соединение (с Open()
является синхронным)?
Что делать в этом случае?
Заранее спасибо, Омер
что делать, если l_oConnection.Close(); выкинет исключение в блок finally? –
используя ... закрыть и удалить соединение, не нужно закрывать тогда – Steve
Я использовал это, но нашел, что он вернётся при первом вызове после того, как база данных была отключена. Это использовало .Net 3.5 для SQL Server 2012 db. – monty