打开SqlConnection时如何捕获异常?

时间:2015-12-16 09:00:56

标签: c# sql-server exception-handling

要在我的应用程序启动期间检查SQL Server实例是否存在/正在运行,我想建立与所需实例的连接。

我这样做:

SqlConnection conn = null;
conn = new SqlConnection("Data Source=AES0020\\ESQLSRV;Initial Catalog=MaterialData;Integrated Security=true;");
try
{
    conn.Open();
}
    catch (SqlException ex)
{
    MessageBox.Show("Sql exception");
}
    catch (Exception ex)
{
    MessageBox.Show("Exception");
}

所以我的理解是,如果无法建立连接,我的try-catch块应该捕获异常。 但事实并非如此。在运行应用程序时,我总是在

处获得异常
conn.Open();
  

类型' System.Data.SqlClient.SqlException'的第一次机会异常。   发生在System.Data.dll

中      

其他信息:与网络相关或特定于实例的错误   在建立与SQL Server的连接时发生。服务器是   没找到或无法访问。验证实例名称是否为   正确并且SQL Server配置为允许远程连接。   (提供商:共享内存提供商,错误:40 - 无法打开   连接到SQL Server)

但它永远不会碰到阻挡。

为什么会这样?

通常,有没有更好的方法来测试同一台机器上的SQL Server是否正在运行?

是的,我还查看过这篇文章No exception when opening SqlConnection in C#。这并不能解决我的问题。

编辑: 对于那些不相信异常没有被抓住的人: enter image description here

0 个答案:

没有答案