c# - SqlConnection InfoMessage 仅在执行结束时触发

标签 c# sql

我正在使用

sqlConnection.InfoMessage += new SqlInfoMessageEventHandler(sqlConnection_InfoMessage);

ExecuteNonQuery() 来执行存储过程。

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

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

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

有什么方法可以在 eventHandler 中实时获取严重性为 10 的自定义 sql 信息消息,但其他异常?

最佳答案

问题似乎出在 ExecuteNonQuery() 上。

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

sqlConnection.FireInfoMessageEventOnUserErrors = true;

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

关于c# - SqlConnection InfoMessage 仅在执行结束时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23753177/

相关文章:

sql - DW 上下文中的 Grain 是什么

c# - 查询 Access DB 时条件表达式中的数据类型不匹配

sql - Redshift 正则表达式匹配

c# - 以高分辨率间隔/计时器引发事件

c# - 如何定义运算符==

SQL 案例上限奇怪的结果

mysql - 如何根据另一个表的 PK 获取一个表的两列的计数?

mysql - 一个脚本中多个 CREATE TABLE

c# - 创建新的 System.Diagnostics.PerformanceCounter 非常慢

c# - 我怎样才能提高这个 LINQ 的性能?