关于SQL SERVER 2000事务

1.事务(Transaction):
事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为 ACID

(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务。

原子性(Atomicty)
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

一致性(Consistency)
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事

务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链

表)都必须是正确的。

隔离性(Isolation)
由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状

态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看

中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使

数据结束时的状态与原始事务执行的状态相同。

持久性(Durability)
事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

2.启动事务
在 Microsoft® SQL Server™ 中,可以按显式、自动提交或隐性模式启动事务。

显式事务

通过发出 BEGIN TRANSACTION 语句显式启动事务。

自动提交事务

这是 SQL Server 的默认模式。每个单独的 Transact-SQL 语句都在其完成后提交。不必指定任

何语句控制事务。

隐性事务

通过 API 函数或 Transact-SQL SET IMPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设

置为打开。下一个语句自动启动一个新事务。当该事务完成时,再下一个 Transact-SQL 语句

又将启动一个新事务。

3.结束事务
可以使用 COMMIT 或 ROLLBACK 语句结束事务。

COMMIT

如果事务成功,则提交。COMMIT 语句保证事务的所有修改在数据库中都永久有效。COMMIT

语句还释放资源,如事务使用的锁。

ROLLBACK

如果事务中出现错误,或者用户决定取消事务,可回滚该事务。ROLLBACK 语句通过将数据返

回到它在事务开始时所处的状态,来恢复在该事务中所作的所有修改。ROLLBACK 还会释放由

事务占用的资源。

4.事务处理过程中的错误

如果服务器错误使事务无法成功完成,SQL Server 将自动回滚该事务,并释放该事务占用的所有

资源。如果客户端与 SQL Server 的网络连接中断了,那么当网络告知 SQL Server 该中断时,将

回滚该连接的所有未完成事务。如果客户端应用程序失败或客户计算机崩溃或重启,也会中断该连

接,而且当网络告知 SQL Server 该中断时,也会回滚所有未完成的连接。如果客户从该应用程序

注销,所有未完成的事务也会被回滚。

如果批处理中出现运行时语句错误(如违反约束),那么 SQL Server 中默认的行为将是只回滚产

生该错误的语句。可以使用 SET XACT_ABORT 语句改变该行为。在 SET XACT_ABORT ON 语句

执行之后,任何运行时语句错误都将导致当前事务自动回滚。编译错误(如语法错误)

不受 SET XACT_ABORT 的影响。

如果出现运行时错误或编译错误,那么程序员应该编写应用程序代码以便指定正确的操作

(COMMIT 或 ROLLBACK)。

5.事务编写指导方针
1).不要在事务处理期间要求用户输入。

2).在浏览数据时,尽量不要打开事务。
在所有预备的数据分析完成之前,不应启动事务。

3).保持事务尽可能地短。
在知道了必须要进行的修改之后,启动事务,执行修改语句,然后立即提交或回滚。只有在需

要时,才打开事务。

4).灵活地使用更低的事务隔离级别。
可以很容易地编写出许多使用授权读事务隔离级别的应用程序。并不是所有的事务都要求可串

行事务隔离级别。

5).灵活地使用更低的游标并发选项,如乐观并发选项。
在很少有可能并发更新的系统中,处理某个偶然的”别人在您读取数据后更改了该数据”错误的

开销,要比在读取数据时始终锁定行的开销小得多。

6).在事务中尽量使访问的数据量最小。
这样可以减少锁定的行数,从而减少事务之间的争夺。

  
« Oracle后台进程            Home            Linux中VSFTPD配置大全 »

No Comments

Be the first to comment on this entry.

Leave a comment

Name(required)
Mail (will not be published)(required)
Website

Fields in bold are required. Email addresses are never published or distributed.

Some HTML code is allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URLs must be fully qualified (eg: http://www.dbifan.com),and all tags must be properly closed.

Line breaks and paragraphs are automatically converted.

Please keep comments relevant. Off-topic, offensive or inappropriate comments may be edited or removed.

    搜索本站

    站点日历

    8月 2005
    « 7   9 »
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  

    订阅本站

    文章分类

    最新日志

    热点文章

    日志存档

    常用标签