Получить сообщение об ошибке из предложения вывода TSQL с помощью SqlDataReader - PullRequest
1 голос
/ 20 января 2011

У меня есть следующий SQL

INSERT INTO [dbo].[table1] ([val1], [val2]) 
OUTPUT INSERTED.* 
VALUES (@val1, @val2)

Я использую SqlCommand.ExecuteReader(), чтобы получить SqlDataReader, который читает поставленную строку. Все работает нормально, когда параметры верны.

Проблемы начинаются, когда в таблице есть ограничение, не удовлетворяемое параметрами, например:

ALTER TABLE [dbo].[table1]
ADD CONSTRAINT [chk_table1_distinct_values] 
CHECK (val1 <> val2)

Если я выполняю команду с одинаковыми значениями для val1 и val2, считыватель молча завершает работу Все, что я могу сделать, это проверить свойство SqlDataReader.HasRows, которое возвращает false.

Итак, мой вопрос, как я могу получить более конкретную ошибку из возвращенного SqlDataReader?

Ответы [ 2 ]

1 голос
/ 20 января 2011

Проверяли ли вы "нормальный" вывод, как в Вывод на печать сохраненной процедуры захвата в .NET

, скопированный из AdaTheDev:

myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);
void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    // Do something with e.Message
}
0 голосов
/ 20 января 2011

добавить begin try..catch и в разделе catch, raiserror.

...