我正在寻找一种更好的错误方法来捕获我在connection.open上的sql连接,这样我就可以更好地记录错误,并确定我的应用程序在哪里出错。
我正在使用try catch并记录捕获的异常但我真正想知道的是知道哪个连接失败了。我的应用程序正在迭代70个服务器并聚合另一个数据库的数据。
答案 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));
}
}
...
}