如果sql连接失败,则会显示陷阱错误详细信息

时间:2009-08-26 20:03:35

标签: .net sql exception-handling

我正在寻找一种更好的错误方法来捕获我在connection.open上的sql连接,这样我就可以更好地记录错误,并确定我的应用程序在哪里出错。

我正在使用try catch并记录捕获的异常但我真正想知道的是知道哪个连接失败了。我的应用程序正在迭代70个服务器并聚合另一个数据库的数据。

3 个答案:

答案 0 :(得分:0)

如果捕获SqlException异常类型,它应该具有特定于连接尝试的信息。像.Number这样的属性将返回SQL错误号,它可以为您提供有关连接失败原因的一些信息。

答案 1 :(得分:0)

在黑暗中拍摄。如果捕获SqlException,则需要遍历其Errors集合。集合中的SqlError对象具有一些额外的属性,包括SqlError.Server,它可以提供您所需的内容。

  

获取SQL实例的名称   生成错误的服务器。

单个SqlException可能有更多SqlError对象,因为colleciton会重新生成命令(sql batch)生成的所有错误。集合中的第一个SqlError对应于(在错误消息中)SqlExpcetion本身中的信息,因此在某种意义上它是重复的。在我的错误报告中,我不得不完全忽略SqlException信息,并且总是在SqlError信息之后去报告,因为它更完整。

答案 2 :(得分:0)

{
    ...
    foreach(var connectionString in connectionStrings)
    {
        try
        {
            using (var cnn = new SqlConnection())
            {
                cnn.Open();
            }
        }
        catch (SqlException)
        {
            Log(string.Format("Failed to open connection '{0}'.", connectionString));
        }
    }
    ...
}