protected override void DispatchMessages(bool ignoreNonFatalMessages) { SqlException exception = base.ProcessMessages(false, ignoreNonFatalMessages); if (exception != null) { SqlConnection connection = this._connection.Connection; if ((connection != null) && connection.FireInfoMessageEventOnUserErrors) { connection.OnInfoMessage(new SqlInfoMessageEventArgs(exception)); } else { this._connection.OnError(exception, false); } } }
override protected void DispatchMessages(bool ignoreNonFatalMessages) { // Override this on the Connection event sink, since we can deal // with info messages here. SqlException exception = ProcessMessages(false, ignoreNonFatalMessages); if (null != exception) { // SQLBUVSTS 225982, query for connection once to avoid race condition between GC (that may collect the connection) and the user thread SqlConnection connection = _connection.Connection; if (null != connection && connection.FireInfoMessageEventOnUserErrors) { connection.OnInfoMessage(new SqlInfoMessageEventArgs(exception)); } else { _connection.OnError(exception, false); // we can't really ever break the direct connection, can we? } } }
// Fires a single InfoMessageEvent private void FireInfoMessageEvent(SqlConnection connection, TdsParserStateObject stateObj, SqlError error) { string serverVersion = null; Debug.Assert(connection != null && _connHandler.Connection == connection); if (_state == TdsParserState.OpenLoggedIn) { serverVersion = _connHandler.ServerVersion; } SqlErrorCollection sqlErs = new SqlErrorCollection(); sqlErs.Add(error); SqlException exc = SqlException.CreateException(sqlErs, serverVersion, _connHandler); bool notified; connection.OnInfoMessage(new SqlInfoMessageEventArgs(exc), out notified); if (notified) { // observable side-effects, no retry stateObj._syncOverAsync = true; } return; }
private void FireInfoMessageEvent(SqlConnection connection, TdsParserStateObject stateObj, SqlError error) { string serverVersion = null; if (this._state == TdsParserState.OpenLoggedIn) { serverVersion = this._connHandler.ServerVersion; } SqlErrorCollection errorCollection = new SqlErrorCollection(); errorCollection.Add(error); SqlException exception = SqlException.CreateException(errorCollection, serverVersion); connection.OnInfoMessage(new SqlInfoMessageEventArgs(exception)); }