コード例 #1
0
        public void SendResultsStart(SqlDataRecord record)
        {
            ADP.CheckArgumentNull(record, "record");

            SetPipeBusy( );
            try {
                EnsureNormalSendValid("SendResultsStart");

                SmiRecordBuffer recordBuffer = record.RecordBuffer;
                if (record.RecordContext == _smiContext)
                {
                    recordBuffer = record.RecordBuffer;
                }
                else
                {
                    recordBuffer = _smiContext.CreateRecordBuffer(record.InternalGetSmiMetaData(), _eventSink);    // Only MetaData needed for sending start
                }
                _smiContext.SendResultsStartToPipe(recordBuffer, _eventSink);

                // Handle any errors that are reported.
                _eventSink.ProcessMessagesAndThrow();

                // remember sent buffer info so it can be used in send row/end.
                _recordBufferSent = recordBuffer;
                _metaDataSent     = record.InternalGetMetaData();
            }
            catch {
                _eventSink.CleanMessages();
                throw;
            }
            finally {
                ClearPipeBusy( );
                Debug.Assert(_eventSink.HasMessages == false, "There should be no messages left in _eventsink at the end of the SendResultsStart!");
            }
        }
コード例 #2
0
 public void SendResultsStart(SqlDataRecord record)
 {
     ADP.CheckArgumentNull(record, "record");
     this.SetPipeBusy();
     try
     {
         this.EnsureNormalSendValid("SendResultsStart");
         SmiRecordBuffer recordBuffer = record.RecordBuffer;
         if (record.RecordContext == this._smiContext)
         {
             recordBuffer = record.RecordBuffer;
         }
         else
         {
             recordBuffer = this._smiContext.CreateRecordBuffer(record.InternalGetSmiMetaData(), this._eventSink);
         }
         this._smiContext.SendResultsStartToPipe(recordBuffer, this._eventSink);
         this._eventSink.ProcessMessagesAndThrow();
         this._recordBufferSent = recordBuffer;
         this._metaDataSent     = record.InternalGetMetaData();
     }
     finally
     {
         this.ClearPipeBusy();
     }
 }
コード例 #3
0
        public void SendResultsStart( SqlDataRecord record ) {
            ADP.CheckArgumentNull(record, "record");

            SetPipeBusy( );
            try {
                EnsureNormalSendValid( "SendResultsStart" );

                SmiRecordBuffer recordBuffer = record.RecordBuffer;
                if (record.RecordContext == _smiContext) {
                    recordBuffer = record.RecordBuffer;
                } else {
                    recordBuffer = _smiContext.CreateRecordBuffer(record.InternalGetSmiMetaData(), _eventSink);    // Only MetaData needed for sending start
                }
                _smiContext.SendResultsStartToPipe( recordBuffer, _eventSink );

                // Handle any errors that are reported.
                _eventSink.ProcessMessagesAndThrow();

                // remember sent buffer info so it can be used in send row/end.
                _recordBufferSent = recordBuffer;
                _metaDataSent = record.InternalGetMetaData();
            }
            catch {
                _eventSink.CleanMessages();
                throw;
            }
            finally {
                ClearPipeBusy( );
                Debug.Assert(_eventSink.HasMessages == false, "There should be no messages left in _eventsink at the end of the SendResultsStart!");
            }
        }