Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中使用SMO从ExecuteOnQuery语句获取错误消息#_C#_Sql Server_Ado.net_Smo - Fatal编程技术网

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); 
}