Ich habe den folgenden Code DB-Verbindung zu testen, sie in regelmäßigen Abständen für die DB die Verfügbarkeit zu prüfen läuft:Wie für Datenbank-Verfügbarkeit prüfen
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;
}
Und:
static public SqlConnection getNewCon()
{
SqlConnection newCon = new SqlConnection();
newCon.ConnectionString = DBConnection.ConnectionString; // m_con.ConnectionString;
newCon.Open();
return newCon;
}
Meine Frage ist: wird diese wie erwartet arbeiten?
Genauer gesagt, ich bin besorgt über den Test der ConnectionState
. Ist es möglich, dass der Zustand wird: Verbindung (seit Open()
ist synchron)?
Was soll ich in diesem Fall tun?
Vielen Dank im Voraus, Omer
was ist, wenn l_oConnection.Close(); Wird eine Ausnahme im finally Block werfen? –
mit ... Schließen und entsorgen Sie die Verbindung, keine Notwendigkeit, dann zu schließen – Steve
Ich habe dies verwendet, aber fand es wahr beim ersten Aufruf, nachdem die Datenbank offline genommen wurde. Dies war mit. Net 3.5 gegen einen SQL Server 2012 db. – monty