2014-05-20 12 views
5

Tôi đang sử dụngC# - SqlConnection InfoMessage chỉ kích hoạt vào cuối thực hiện

sqlConnection.InfoMessage += new SqlInfoMessageEventHandler(sqlConnection_InfoMessage); 

ExecuteNonQuery() để thực hiện một thủ tục lưu trữ.

Tôi đang sử dụng RAISERROR("Custom Message", 10 , 1) WITH NOWAIT trong quy trình được lưu trữ để gửi tin nhắn.

Tôi nhận được tất cả thư được gửi bởi máy chủ sql ở cuối quá trình thực hiện truy vấn mà tôi muốn tại thời điểm xử lý.

Tôi có thể nhận được tất cả thư theo thời gian thực bằng cách đặt sqlConnection.FireInfoMessageEventOnUserErrors = true; nhưng điều này gây ra lỗi với mức độ nghiêm trọng lớn hơn 10 cũng được xử lý bởi SqlInfoMessageEventHandler mà tôi muốn bị loại trừ.

Có cách nào để có được thông tin tùy chỉnh sql tùy chỉnh của tôi với mức độ nghiêm trọng 10 tại thời gian thực trong eventHandler nhưng khác là ngoại lệ?

Trả lời

9

Có vẻ như vấn đề là với ExecuteNonQuery().

Trong trường hợp của tôi, tôi sử dụng ExecuteScalar() và loại bỏ các dòng

sqlConnection.FireInfoMessageEventOnUserErrors = true;

nào gây ra RAISERROR("Custom Message", 10 , 1) WITH NOWAIT được đánh bắt bởi eventHandler và khác như trường hợp ngoại lệ tại thời gian thực.

+0

ExecuteScalar thay vì ExecuteNonQuery đã thực hiện thủ thuật cho tôi, cảm ơn bạn! –

Các vấn đề liên quan