2014-05-20 14 views
5

Sto usandoC# - SqlConnection InfoMessage innescando solo alla fine dell'esecuzione

sqlConnection.InfoMessage += new SqlInfoMessageEventHandler(sqlConnection_InfoMessage); 

e ExecuteNonQuery() per eseguire una stored procedure.

Sto utilizzando RAISERROR("Custom Message", 10 , 1) WITH NOWAIT nella stored procedure per inviare il messaggio.

Sto ricevendo tutto il messaggio lanciato da SQL Server alla fine dell'esecuzione della query che voglio al momento del processo.

Potrei ottenere tutto il messaggio in tempo reale impostando sqlConnection.FireInfoMessageEventOnUserErrors = true; ma questo causa l'errore con gravità maggiore di 10 anche essere gestito da SqlInfoMessageEventHandler che voglio essere generato come eccezione.

C'è un modo per ottenere il mio sql personalizzato infomessage con gravità 10 in tempo reale in eventHandler ma altri come eccezione?

risposta

9

Sembra che il problema sia con ExecuteNonQuery().

Nel mio caso ho usato ExecuteScalar() e rimosso la linea

sqlConnection.FireInfoMessageEventOnUserErrors = true;

che causano la RAISERROR("Custom Message", 10 , 1) WITH NOWAIT per essere catturati da EventHandler e altri come eccezioni in tempo reale.

+0

ExecuteScalar invece di ExecuteNonQuery ha fatto il trucco per me, grazie! –

Problemi correlati