我正在尝试执行脚本并捕获错误(如果有的话)并将输出写入某处。
我有这个:
...
SqlConnection connection = new SqlConnection(connString);
Server server = new Server(new ServerConnection(connection));
server.ConnectionContext.ExecuteNonQuery(script);
...
当SQL出现问题时,我无法解决查询的实际问题。
我试过了
a。)捕获ExecutionFailureException并处理它 - 错误本身没有与SQL问题相关的信息和
b。)我已经尝试在server.ReadErrorLog()中循环,但这似乎与服务器连接的错误日志有关,而不是与正在执行的SQL的上下文有关,并且
b。)我尝试在ConnectionContext上添加一个似乎永远不会触发的InfoHandler事件处理程序。
如何获得详细的错误消息? (即如果我在管理工作室运行SQL,我会看到的错误将是完美的,如果可能的话)
答案 0 :(得分:3)
我只是想出来,而不是看着返回模糊的ex.Message
执行Transact-SQL语句或批处理时发生异常。
我只需要引用ex.GetBaseException()。ExecutionFailureException的消息,我收到了更有意义的信息:
无效的对象名称' FakeTable' (或任何错误)
代码:
...
try
{
SqlConnection connection = new SqlConnection(connString);
Server server = new Server(new ServerConnection(connection));
server.ConnectionContext.ExecuteNonQuery(script);
} catch (ExecutionFailureException ex) {
MessageBox.Show("Error: " + ex.GetBaseException().Message);
}