跨server 分布式事务
public bool SaveLaserLog(Employee User, string ComputerName, string PAModelName, string ModulePartNo, string SnoModelID, ref string msg)
{
if (objConn.State != ConnectionState.Open)
{
objConn.Open();
}
if (objEDIConn.State != ConnectionState.Open)
{
objEDIConn.Open();
}
SqlTransaction transaction = objConn.BeginTransaction("SaveLaserLog");
SqlTransaction transactionEDI = objEDIConn.BeginTransaction("SaveLaserLog");
DataSet ds = new DataSet();
SqlParameter[] paras = new SqlParameter[6];
paras[0] = new SqlParameter("SNO", SqlDbType.VarChar);
paras[0].Value = _customno;
paras[1] = new SqlParameter("DNModelName", SqlDbType.VarChar);
paras[1].Value = PAModelName;
paras[2] = new SqlParameter("PartNo", SqlDbType.VarChar);
paras[2].Value = ModulePartNo;
paras[3] = new SqlParameter("FAModelId", SqlDbType.VarChar);
paras[3].Value = SnoModelID;
paras[4] = new SqlParameter("UserId", SqlDbType.VarChar);
paras[4].Value = Program.objDB.gEmployee.Id;
paras[5] = new SqlParameter("PdLine", SqlDbType.VarChar);
paras[5].Value = Program.objDB.gEmployee.PdLine;
try
{
ds = SqlHelper.ExecuteDataset(objConn, transaction, CommandType.StoredProcedure, "dbo.uspLaserMarkAndPackAssemble", paras);
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
if (ds.Tables[0].Rows[0]["RetCode"].ToString().Trim() == "0")
{
msg = (ds.Tables[0].Rows[0]["Msg"].ToString());
}
else
{
msg = (ds.Tables[0].Rows[0]["Msg"].ToString());
transaction.Rollback();
return false;
}
}
else
{
msg = "lost return rows while SaveLaserLog";
transaction.Rollback();
return false;
}
}
catch (Exception ex)
{
Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
Console.WriteLine(" Message: {0}", ex.Message);
try
{
transaction.Rollback();
}
catch (Exception ex2)
{
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
Console.WriteLine(" Message: {0}", ex2.Message);
}
return false;
}
DataSet dsEDI = new DataSet();
SqlParameter[] parasEDI = { new SqlParameter("@DeliveryNo", SqlDbType.VarChar, 20) ,
new SqlParameter("@LineItem", SqlDbType.VarChar, 10) ,
new SqlParameter("@MPN", SqlDbType.VarChar, 50) ,
new SqlParameter("@Sno", SqlDbType.VarChar, 20) ,
new SqlParameter("@MbSno", SqlDbType.VarChar, 12) ,
new SqlParameter("@UserId", SqlDbType.VarChar, 6) ,
new SqlParameter("@PersonFlag", SqlDbType.VarChar,1) ,
new SqlParameter("@ComputerName", SqlDbType.VarChar,20)};
parasEDI[0].Value = DN.DeliveryNo;
parasEDI[1].Value = DN.LineItem;
parasEDI[2].Value = _mpn;
parasEDI[3].Value = _customno;
parasEDI[4].Value = _sno;
parasEDI[5].Value = User.Id;
parasEDI[6].Value = "Y";
parasEDI[7].Value = ComputerName;
try
{
dsEDI = SqlHelper.ExecuteDataset(objEDIConn, transactionEDI, CommandType.StoredProcedure, "uspLaserSave", parasEDI);
if (dsEDI.Tables.Count > 0 && dsEDI.Tables[0].Rows.Count > 0)
{
string returnCode = dsEDI.Tables[0].Rows[0][0].ToString();
if (returnCode == "0")
{
DN_OutQty = Convert.ToInt32(dsEDI.Tables[0].Rows[0]["OutQty"].ToString());
msg = _customno + " save completed.";
transactionEDI.Commit();
transaction.Commit();
return true;
}
else
{
msg = dsEDI.Tables[0].Rows[0]["Msg"].ToString();
transaction.Rollback();
transactionEDI.Rollback();
return false;
}
}
else
{
msg = "lost return rows while SaveLaserLog";
transaction.Rollback();
transactionEDI.Rollback();
return false;
}
}
catch (Exception ex)
{
Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
Console.WriteLine(" Message: {0}", ex.Message);
try
{
transaction.Rollback();
transactionEDI.Rollback();
}
catch (Exception ex2)
{
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
Console.WriteLine(" Message: {0}", ex2.Message);
}
return false;
}
}

浙公网安备 33010602011771号