C# 在C中使用SMO从ExecuteOnQuery语句获取错误消息#
我正在尝试执行一个脚本并捕获错误(如果有),然后将输出写到某个地方 我有这个:C# 在C中使用SMO从ExecuteOnQuery语句获取错误消息#,c#,sql-server,ado.net,smo,C#,Sql Server,Ado.net,Smo,我正在尝试执行一个脚本并捕获错误(如果有),然后将输出写到某个地方 我有这个: ... SqlConnection connection = new SqlConnection(connString); Server server = new Server(new ServerConnection(connection)); server.ConnectionContext.ExecuteNonQuery(script); ... 当SQL中出现问题时,我很难理解查询的
...
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事件处理程序,但似乎从未启动过
如何获取详细的错误消息?
(也就是说,如果可能的话,我在ManagementStudio中运行SQL时看到的错误将是完美的)我只是找到了答案,而不是查看返回模糊信息的ex.消息 执行Transact-SQL语句或批处理时发生异常 我只需参考ExecutionFailureException的ex.GetBaseException()。消息,就得到了更有意义的信息: 无效的对象名称“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);
}