SqlConnection InfoMessage仅在执行结束时触发

本文关键字:结束 执行 InfoMessage SqlConnection | 更新日期: 2023-09-27 18:04:15

我使用

sqlConnection.InfoMessage += new SqlInfoMessageEventHandler(sqlConnection_InfoMessage);

ExecuteNonQuery()来执行存储过程。

我在存储过程中使用RAISERROR("Custom Message", 10 , 1) WITH NOWAIT来抛出消息。

我在查询执行结束时得到sql server抛出的所有消息,这是我想要的。

我可以通过设置sqlConnection.FireInfoMessageEventOnUserErrors = true;实时获取所有消息,但这会导致严重程度大于10的错误也由SqlInfoMessageEventHandler处理,我想将其作为异常抛出。

有没有办法得到我的自定义sql信息与严重程度10实时在eventHandler,但其他作为例外?

SqlConnection InfoMessage仅在执行结束时触发

这似乎是ExecuteNonQuery()的问题。

在我的例子中,我使用ExecuteScalar()并删除了

sqlConnection.FireInfoMessageEventOnUserErrors = true;

导致RAISERROR("Custom Message", 10 , 1) WITH NOWAIT被eventHandler和其他异常实时捕获。