日期:2014-05-18  浏览次数:20868 次

SqlTransaction 用与不用的差别~~~疑惑

  try
  {
  sqlcon = new SqlConnection(sqlConnection);
  sqlcon.Open();
  tran = sqlcon.BeginTransaction();
  SqlCommand sqlcom = new SqlCommand(StrExecute,sqlcon);
  sqlcom.Transaction = tran;
  sqlcom.ExecuteNonQuery();
  tran.Commit();
  }
  catch
  {
  tran.Rollback();
  }
  finally
  {
  sqlcon.Close();
  }




  sqlcon = new SqlConnection(sqlConnection);
  sqlcon.Open();
  SqlCommand sqlcom = new SqlCommand(StrExecute,sqlcon);
  sqlcom.ExecuteNonQuery();
  sqlcon.Close();




为什么当我传入"BACKUP DATABASE WCRM TO DISK='" + sv.FileName.ToString() + "'"
时第一条语句不能完成这个工作,而第二条可以。
按理说这条语句绝对是没问题的,在第一条执行的时候绝对不会出错。
是不是晚还有哪些细节不够注意,所以才会不能执行

------解决方案--------------------
仔细看MSDN
http://msdn.microsoft.com/zh-cn/library/ms186865.aspx

在备注中明确说明
不允许在显式或隐式事务中使用 BACKUP 语句。
------解决方案--------------------
不知道帮顶,也许backup本身不需要事务. 因为它不是破坏性操作,没有什么可以rollback的.