Salve,
sto cercando di usare SQLtransaction, su alcune Stored procedure:
ho fatto in questo modo:
SqlCommand cmd = new SqlCommand();
cmd.Connection = cmd.Connection;
//cmd.Connection = cn;
cmd.Connection = new SqlConnection(comm.connstring);
cmd.Connection.Open();
SqlTransaction myTrans;
// Start a local transaction
myTrans = cmd.Connection.BeginTransaction();
// Must assign both transaction object and connection
// to Command object for a pending local transaction
cmd.Transaction = myTrans;
try
{
cmd.CommandText = "SP_T2T_1";
cmd.CommandType = CommandType.StoredProcedure;
//parameters
cmd.Parameters.Add("@Employee_ID",SqlDbType.VarChar).Value =OPERATOR ;
cmd.Parameters.Add("@Machine_Type",SqlDbType.VarChar).Value =TESTPHASE;
cmd.Parameters.Add("@Machine_Name",SqlDbType.VarChar).Value =ATENAME;
cmd.Parameters.Add("@Start_Date",SqlDbType.DateTime).Value = STARTDATETIME;
cmd.Parameters.Add("@Deliverable_ID",SqlDbType.VarChar).Value = Deliverable_ID;
cmd.Parameters.Add("@Deliverable_Issue",SqlDbType.VarChar).Value = Deliverable_Issue;
cmd.Parameters.Add("@Dept_ID",SqlDbType.VarChar).Value =RUNMODE;
cmd.ExecuteNonQuery();
cmd.CommandText = "SP_T2T_2";
cmd.CommandType = CommandType.StoredProcedure;
//parameters
cmd.Parameters.Add("@Serial_Number",SqlDbType.VarChar).Value =SERIALNUMBER ;
cmd.Parameters.Add("@Machine_Type",SqlDbType.VarChar).Value =TESTPHASE;
cmd.Parameters.Add("@Machine_Name",SqlDbType.VarChar).Value =ATENAME;
cmd.Parameters.Add("@Start_Date",SqlDbType.DateTime).Value = STARTDATETIME;
cmd.Parameters.Add("@Item_Start",SqlDbType.DateTime).Value = STARTDATETIME;
cmd.Parameters.Add("@Item_End",SqlDbType.DateTime).Value = ENDDATETIME;
cmd.Parameters.Add("@Item_Number",SqlDbType.VarChar).Value =PARTNUMBER;
cmd.Parameters.Add("@Item_Issue",SqlDbType.VarChar).Value =VERSION;
cmd.Parameters.Add("@Pass",SqlDbType.Bit).Value =TESTSTATUS;
cmd.Parameters.Add("@In_Structure",SqlDbType.Bit).Value = null;
cmd.Parameters.Add("@Slot_Number",SqlDbType.VarChar).Value = null;
cmd.Parameters.Add("@Captive",SqlDbType.Bit).Value =null;
cmd.Parameters.Add("@Parent_Item_Start",SqlDbType.VarChar).Value = null;
cmd.Parameters.Add("@Parent_Serial",SqlDbType.VarChar).Value =null;
cmd.Parameters.Add("@Purchase_Order",SqlDbType.VarChar).Value =null;
cmd.ExecuteNonQuery();
myTrans.Commit();
return string.Empty;
}
catch(Exception e)
{
try
{
myTrans.Rollback();
}
catch (SqlException ex)
{
if (myTrans.Connection != null)
{
return "An exception of type " + ex.GetType() +
" was encountered while attempting to roll back the transaction." +
ex.Message;
}
}
return "An exception of type " + e.GetType() +
" was encountered while inserting the data." +
e.ToString();
}
finally
{
cmd.Connection.Close();
}
ricevo pero' il seguente errore:
transaction procedure or function SP_T2T_2 has too many..
Idee??
--------------------
Vincenzo PESANTE
Software Engineer