Читайте SqlDataReader после исключения - как панель результатов SSMS - PullRequest
1 голос
/ 12 января 2020

Есть ли способ получить объект Reader из SqlCommand.ExecuteReader без сбоя при SqlException?

В SSMS для этой команды:

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

Я получил ошибку info + Result pane TableName.

Когда я исключаю SqlCommand.ExecuteReader с этой командой, я получаю SqlException, но я не могу получить данные результата. Есть ли способ пропустить исключение и обработать объект Reader?

1 Ответ

5 голосов
/ 12 января 2020

Чтобы не выбрасывать SqlException и продолжать выполнение пакета после ошибок, вы можете установить для свойства подключения FireInfoMessageEventOnUserErrors значение true и обработать событие подключения InfoMessage. Затем будет вызван обработчик Infomessage вместо броска SqlException, и вы можете продолжить обработку SqlDataReader результатов, используя Read и NextResult.

...