2014-05-20 8 views
5

के अंत में ही ट्रिगर मैंग # - SqlConnection InfoMessage निष्पादन

sqlConnection.InfoMessage += new SqlInfoMessageEventHandler(sqlConnection_InfoMessage); 

और ExecuteNonQuery() उपयोग कर रहा हूँ एक संग्रहीत प्रक्रिया निष्पादित करने के लिए।

मैं संदेश भेजने के लिए संग्रहित प्रक्रिया में RAISERROR("Custom Message", 10 , 1) WITH NOWAIT का उपयोग कर रहा हूं।

मुझे क्वेरी निष्पादन के अंत में एसक्यूएल सर्वर द्वारा फेंक दिया गया सभी संदेश मिल रहा है जो मैं प्रक्रिया के समय चाहता हूं।

मुझे sqlConnection.FireInfoMessageEventOnUserErrors = true; सेट करके वास्तविक समय पर सभी संदेश मिल सकते हैं, लेकिन इस कारण 10 से अधिक गंभीरता के साथ त्रुटि SqlInfoMessageEventHandler द्वारा संभाली जा सकती है जिसे मैं अपवाद के रूप में फेंकना चाहता हूं।

क्या मेरे कस्टम एसक्यूएल अविश्वसनीयता से गंभीरता से 10 में वास्तविक समय पर हैन्डलर लेकिन अन्य अपवाद के रूप में कोई तरीका है?

उत्तर

9

ऐसा लगता है कि यह समस्या ExecuteNonQuery() के साथ है।

मेरे मामले में मैं ExecuteScalar() का इस्तेमाल किया और लाइन

sqlConnection.FireInfoMessageEventOnUserErrors = true;

कौन सा कारण RAISERROR("Custom Message", 10 , 1) WITH NOWAIT वास्तविक समय में अपवाद के रूप में eventhandler से पकड़ा और अन्य होने के लिए हटा दिया।

+0

ExecuteNonQuery के बजाय ExecuteScalar मेरे लिए चाल है, धन्यवाद! –