代码之家  ›  专栏  ›  技术社区  ›  tomsv

在SQL Server中强制执行写操作的事务

  •  0
  • tomsv  · 技术社区  · 15 年前

    如何确保和强制我的MS SQL Server数据库的所有写操作都是基于事务的?

    我之所以要这样做,是因为数据库中包含金融账户数据,并且在某些更改过程中失败的操作不应该因为错误或崩溃而导致数据库混乱。

    应用程序是用ASP.NET C_编写的。

    谢谢。

    编辑: 有一个DAL,但它(还)不需要为变更进行事务处理。 我们自己写了DAL。我们没有使用ORM。

    我知道如何从ASP.NET执行一个事务。

    我想确保 全部的 在事务表单中进行更改,这样,如果应用程序在中间抛出一些异常,则不会对数据库进行更改。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Mark PM    15 年前

    您可能希望查看将SQL Server设置为使用隐式事务: http://msdn.microsoft.com/en-us/library/ms188317.aspx

        2
  •  2
  •   UserControl    15 年前

    默认情况下,任何SQL语句都是原子的,但通常需要执行其中的两个或多个语句,并确保整个集合是原子的。所以您需要手动启动和提交一个事务。如果在应用程序中使用ADO.NET,代码可以如下所示:

    using (SqlConnection db = new SqlConnection("connectionstring"))
    {
          db.Open();
          SqlTransaction transaction = db.BeginTransaction();
          try 
          {
             new SqlCommand("update statement", db, transaction).ExecuteNonQuery();
             new SqlCommand("another statement", db, transaction).ExecuteNonQuery();
             // additional operations here
             transaction.Commit();
          } 
          catch (SqlException sqlError) 
          {
             transaction.Rollback();
          }
    }
    
        3
  •  0
  •   ceth    15 年前

    MS SQL中的所有操作都是基于事务的。但悲剧可以是 explicit and implicit .