public DataTable RunProc(String sProcName, SqlParameter[] arrParams)
{
string sClassName = "DBAccess.RunProc";
SqlConnection objSqlConnection = null;
try
{
objSqlConnection = (SqlConnection)OpenConnection();
string sLogMessage="Executing Stored Procedure: ["+ sProcName +"] with Parameters ";
foreach(SqlParameter objParameter in arrParams)
{
sLogMessage+=objParameter.ParameterName+" = ";
sLogMessage+=objParameter.Value+" ";
}
logger.Logns(LogLevel.TraceDetail,sClassName," ",sLogMessage);
SqlCommand objSqlCommand = CreateCommand(sProcName, arrParams,objSqlConnection,null);
objSqlCommand.CommandTimeout=300;
SqlDataAdapter objSQLDataAdapter = new SqlDataAdapter(objSqlCommand);
DataSet objDataSet = new DataSet();
objSQLDataAdapter.Fill(objDataSet);
this.CloseConnection(objSqlConnection);
logger.Logns(LogLevel.TraceDetail,sClassName," ","Success Executing Stored Procedure: ["+ sProcName +"]");
this.CloseConnection(objSqlConnection);
if( objDataSet.Tables.Count>0)
{
return objDataSet.Tables[0];
}
else
{
return null;
}
//SqlParameter p= new SqlParameter("PACCOUNTNUM", IBM.Data.DB2.DB2Type.VarChar, 17, System.Data.ParameterDirection.Input, true, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null);
}
catch(Exception Ex)
{
logger.Logns(LogLevel.TraceDetail,sClassName," ","Error Executing Stored Procedure: ["+ Ex.ToString() +"]");
this.CloseConnection(objSqlConnection);
throw(new Exception(Ex.ToString()));
}
}
Вышеупомянутый код успешно выполняется в нашей рабочей среде, однако внезапно мы начинаем получать ошибку в наших журналах
11.04.2011 09:42:46 | TraceDetail
| DBAccess.RunProc
| | Ошибка
Выполнение хранимой процедуры:
[System.Threading.ThreadAbortException:
Тема была прервана. в
SNINativeMethodWrapper.SNIPacketGetConnection (IntPtr
пакет) в
System.Data.SqlClient.TdsParserStateObject.ProcessSniPacket (IntPtr
пакет, ошибка UInt32) в
System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult
asyncResult, TdsParserStateObject
stateObj) в
System.Data.SqlClient.TdsParserStateObject.ReadPacket (Int32
bytesExpected) в
System.Data.SqlClient.TdsParserStateObject.ReadBuffer ()
в
System.Data.SqlClient.TdsParserStateObject.ReadByte ()
в
System.Data.SqlClient.TdsParser.Run (RunBehavior
runBehavior, SqlCommand cmdHandler,
SqlDataReader dataStream,
BulkCopySimpleResultSet
bulkCopyHandler, TdsParserStateObject
stateObj) в
System.Data.SqlClient.SqlDataReader.ConsumeMetaData ()
в
System.Data.SqlClient.SqlDataReader.get_MetaData ()
в
System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader
ds, RunBehavior, runBehavior, String
resetOptionsString) в
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior
cmdBehavior, RunBehavior runBehavior,
Boolean returnStream, Boolean async)
в
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior
cmdBehavior, RunBehavior runBehavior,
Boolean returnStream, метод String,
Результат DbAsyncResult) в
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior
cmdBehavior, RunBehavior runBehavior,
Boolean returnStream, метод String)
в
System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior
поведение, метод String) в
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior
поведение) в
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader (CommandBehavior
поведение) в
System.Data.Common.DbDataAdapter.FillInternal (DataSet
набор данных, DataTable [] datatables, Int32
startRecord, Int32 maxRecords, строка
srcTable, команда IDbCommand,
Поведение CommandBehavior) в
System.Data.Common.DbDataAdapter.Fill (DataSet
dataSet, Int32 startRecord, Int32
maxRecords, String srcTable,
Команда IDbCommand, CommandBehavior
поведение) в
System.Data.Common.DbDataAdapter.Fill (DataSet
dataSet) в
GDCIEngine.Data.PrismDb.DBAccess.RunProc (String
sProcName, SqlParameter []
arrParams)]
Вышеупомянутый код используется в веб-сервисе, который вызывается уровнем представления на уровне представления. Я получаю тайм-аут HTTP, однако в бэкэнде, где служба фактически размещается, указанное выше исключение печатается, как только я Выполняйте iisreset на бэкэнд-машине, каждая вещь начинает работать, как и ожидалось, эта ошибка время от времени появляется, и iisreset - единственное решение, которое я нашел, чтобы справиться с ним, любая помощь в этом отношении будет высоко оценена
Спасибо
С уважением
Азим