void StartCommandInternal(bool synchronous) { if (!this.HasOperationTimedOut()) { try { IAsyncResult result; using (this.PrepareTransactionalCall(this.dependentTransaction)) { AsyncCallback wrappedCallback = this.PrepareAsyncCompletion(onExecuteReaderCallback); this.sqlCommand.Connection = StoreUtilities.CreateConnection(this.connectionString); if (!this.HasOperationTimedOut()) { result = this.sqlCommand.BeginExecuteReader(wrappedCallback, this, CommandBehavior.CloseConnection); } else { this.sqlCommand.Connection.Close(); this.Complete(synchronous, new TimeoutException(SR.TimeoutOnSqlOperation(this.timeoutHelper.OriginalTimeout.ToString()))); return; } } if (this.CheckSyncContinue(result)) { if (this.CompleteExecuteReader(result)) { this.Complete(synchronous); } } return; } catch (SqlException exception) { if (TD.SqlExceptionCaughtIsEnabled()) { TD.SqlExceptionCaught(this.eventTraceActivity, exception.Number.ToString(null, CultureInfo.InvariantCulture), exception.Message); } if (this.sqlCommand.Connection != null) { this.sqlCommand.Connection.Close(); } if (!this.CheckRetryCount() || !ShouldRetryForSqlError(exception.Number, RetryErrorOptions.RetryOnBegin)) { throw; } if (TD.RetryingSqlCommandDueToSqlErrorIsEnabled()) { TD.RetryingSqlCommandDueToSqlError(this.eventTraceActivity, exception.Number.ToString(CultureInfo.InvariantCulture)); } } catch (InvalidOperationException) { if (!this.CheckRetryCount()) { throw; } } if (this.EnqueueRetry()) { return; } } if (this.HasOperationTimedOut()) { if (TD.TimeoutOpeningSqlConnectionIsEnabled()) { TD.TimeoutOpeningSqlConnection(this.eventTraceActivity, this.timeoutHelper.OriginalTimeout.ToString()); } } else { if (TD.MaximumRetriesExceededForSqlCommandIsEnabled()) { TD.MaximumRetriesExceededForSqlCommand(this.eventTraceActivity); } } this.Complete(synchronous, new TimeoutException(SR.TimeoutOnSqlOperation(this.timeoutHelper.OriginalTimeout.ToString()))); }
public static void TraceSqlCommand(SqlCommand command, bool isStarting) { if ((isStarting && TD.StartSqlCommandExecuteIsEnabled()) || (!isStarting && TD.EndSqlCommandExecuteIsEnabled())) { StringBuilder builder = new StringBuilder(0x200); bool flag = false; foreach (SqlParameter parameter in command.Parameters) { string str; if ((parameter.Value == DBNull.Value) || (parameter.Value == null)) { str = "Null"; } else if (parameter.DbType == DbType.Binary) { str = "Binary"; } else { str = parameter.Value.ToString(); } if (flag) { builder.AppendFormat(CultureInfo.InvariantCulture, "{0}='{1}'", new object[] { parameter.ParameterName, str }); flag = false; } else { builder.AppendFormat(CultureInfo.InvariantCulture, ", {0}='{1}'", new object[] { parameter.ParameterName, str }); } builder.AppendLine(command.CommandText); } if (isStarting) { TD.StartSqlCommandExecute(builder.ToString()); } else { TD.EndSqlCommandExecute(builder.ToString()); } } }