异常后读取 SqlDataReader——类似 SSMS 结果面板

Read SqlDataReader after Exception -- LIKE SSMS Result Pane

有没有办法从 SqlCommand.ExecuteReader 获取 Reader 对象而不在 SqlException 上失败?

在 SSMS 中,对于此命令:

RAISERROR (15600, 12, 5, 'example');
SELECT   * FROM TableName

我得到了 TableName 的错误信息 + 结果面板。

当我用这个命令执行 SqlCommand.ExecuteReader 时,我得到一个 SqlException,但我无法得到结果数据。 有没有办法跳过异常,并处理 Reader 对象?

为避免抛出 SqlException 并在错误后继续执行批处理,您可以设置连接 FireInfoMessageEventOnUserErrors property to true and handle the connection InfoMessage 事件。然后将调用 Infomessage 处理程序而不是抛出 SqlException,您可以使用 ReadNextResult.

继续处理 SqlDataReader 结果