`
haotianpeng163
  • 浏览: 25708 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转:控制事务(数据库引擎)

 
阅读更多

转:http://msdn.microsoft.com/zh-cn/library/ms175523(v=sql.105).aspx


SQL Server 2008 R2 其他版本
应用程序主要通过指定事务启动和结束的时间来控制事务。可以使用 Transact-SQL 语句或数据库应用程序编程接口 (API) 函数来指定这些时间。系统还必须能够正确处理那些在事务完成之前便终止事务的错误。

默认情况下,事务按连接级别进行管理。在一个连接上启动一个事务后,该事务结束之前,在该连接上执行的所有 Transact-SQL 语句都是该事务的一部分。但是,在多个活动的结果集 (MARS) 会话中,Transact-SQL 显式或隐式事务将变成批范围的事务,这种事务按批处理级别进行管理。当批处理完成时,如果批范围的事务还没有提交或回滚,SQL Server 将自动回滚该事务。

启动事务
使用 API 函数和 Transact-SQL 语句,可以在 SQL Server 数据库引擎实例中将事务作为显式、自动提交或隐式事务来启动。在 MARS 会话中,Transact-SQL 显式和隐式事务将变成批范围的事务。

显式事务
通过 API 函数或通过发出 Transact-SQL BEGIN TRANSACTION 语句来显式启动事务。

自动提交事务
数据库引擎的默认模式。每个单独的 Transact-SQL 语句都在其完成后提交。不必指定任何语句来控制事务。

隐式事务
通过 API 函数或 Transact-SQL SET IMPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设置为打开。下一个语句自动启动一个新事务。当该事务完成时,下一个 Transact-SQL 语句又将启动一个新事务。

批范围的事务
只适用于多个活动的结果集 (MARS),在 MARS 会话中启动的 Transact-SQL 显式或隐式事务将变成批范围的事务。当批处理完成时,如果批范围的事务还没有提交或回滚,SQL Server 将自动回滚该事务。

事务模式按连接级别进行管理。一个连接的事务模式发生变化对任何其他连接的事务模式没有影响。

结束事务
您可以使用 COMMIT 或 ROLLBACK 语句,或者通过 API 函数来结束事务。

COMMIT
如果事务成功,则提交。COMMIT 语句保证事务的所有修改在数据库中都永久有效。COMMIT 语句还释放事务使用的资源(例如,锁)。

ROLLBACK
如果事务中出现错误,或用户决定取消事务,则回滚该事务。ROLLBACK 语句通过将数据返回到它在事务开始时所处的状态,来取消事务中的所有修改。ROLLBACK 还释放事务占用的资源。

注意
在为支持多个活动的结果集 (MARS) 而建立的连接中,只要还有待执行的请求,就无法提交通过 API 函数启动的显式事务。如果在未完成的操作还在运行时尝试提交此类事务,将导致出现错误。
指定事务边界
可以使用 Transact-SQL 语句或 API 函数和方法来确定数据库引擎事务启动和结束的时间。

Transact-SQL 语句
可以使用 BEGIN TRANSACTION、COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION、ROLLBACK WORK 和 SET IMPLICIT_TRANSACTIONS 语句来描述事务。这些语句主要用于 DB 库应用程序和 Transact-SQL 脚本(如使用 osql 命令提示实用工具运行的脚本)中。

API 函数和方法
数据库 API(如 ODBC、OLE DB、ADO 和 .NET Framework SQLClient 命名空间)包含用于描述事务的函数或方法。这些是数据库引擎应用程序中用于控制事务的主要机制。

每个事务都必须只由其中一种方法管理。在对同一事务使用两种方法会导致出现不确定的结果。例如,不应先使用 ODBC API 函数启动一个事务,再使用 Transact-SQL COMMIT 语句完成该事务。这样将无法向 SQL Server ODBC 驱动程序通知已提交该事务。在这种情况下,应使用 ODBC SQLEndTran 函数结束该事务。

事务处理过程中的错误
如果某个错误使事务无法成功完成,SQL Server 会自动回滚该事务,并释放该事务占用的所有资源。如果客户端与数据库引擎实例的网络连接中断了,那么当网络向实例通知该中断后,该连接的所有未完成事务均会被回滚。如果客户端应用程序失败或客户端计算机崩溃或重新启动,也会中断连接,而且当网络向数据库引擎实例通知该中断后,该实例会回滚所有未完成的连接。如果客户端从该应用程序注销,所有未完成的事务也会被回滚。

如果批中出现运行时语句错误(如违反约束),那么数据库引擎中的默认行为是只回滚产生该错误的语句。可以使用 SET XACT_ABORT 语句更改此行为。在执行 SET XACT_ABORT ON 语句后,任何运行时语句错误都将导致自动回滚当前事务。编译错误(如语法错误)不受 SET XACT_ABORT 的影响。有关详细信息,请参阅 SET XACT_ABORT (Transact-SQL)。

出现错误时,纠正操作(COMMIT 或 ROLLBACK)应包括在应用程序代码中。一种处理错误(包括那些事务中的错误)的有效工具是 Transact-SQL TRY...CATCH 构造。有关包括事务的示例的详细信息,请参阅在 Transact-SQL 中使用 TRY...CATCH 和 TRY...CATCH (Transact-SQL)。[/size]
分享到:
评论

相关推荐

    Dao Jet数据库引擎

    Dao Jet数据库引擎是一种用于Windows操作系统的数据库管理工具,它提供了数据存储、管理和访问的功能。在Windows环境中,数据库引擎是应用程序与数据库交互的核心组件,允许开发者和用户执行SQL查询、存储和检索数据...

    解密SqlServer数据库引擎

    3. **数据一致性与完整性**:Sql Server数据库引擎通过事务处理和约束机制(如主键、外键)保证数据的一致性和完整性,确保并发操作的正确性。 4. **数据安全与权限控制**:提供用户管理和权限控制,限制不同用户对...

    Mysql数据库引擎大揭秘

    - 关系型数据库引擎:如MySQL,使用表格结构,支持SQL,强调数据一致性,适用于结构化数据存储。 - 非关系型数据库引擎(NoSQL):如MongoDB,采用键值对、文档、列族等方式,适合非结构化数据,强调高性能和可伸缩...

    行业-57 停一停脚步:梳理一下数据库的多事务并发运行的隔离机制l.rar

    在多用户环境中,多个事务可能同时对数据库进行操作,这就会引入并发控制的问题。事务的并发运行可能会导致数据不一致,因此,数据库系统提供了事务隔离机制来确保数据的一致性和完整性。本篇文章将深入探讨数据库中...

    数据库引擎技术架构分析.pptx

    在“数据库引擎技术架构分析.pptx”中,主要讨论了技术创新、数据库引擎的整体架构、集群架构、连接与协议、安全防范、前端架构、事务管理和并发控制等多个方面。 1. **技术创新**:随着技术的发展,数据库引擎不断...

    数据库 怎样运行数据库引擎

    - **数据库引擎**: 是数据库管理系统的核心组件,负责执行所有与数据处理相关的操作,如查询、事务管理等。 - **SQL**: Structured Query Language(结构化查询语言),是一种用于管理和操作关系型数据库的标准编程...

    mdb数据库引擎软件

    这种文件格式基于Jet数据库引擎,这是一个由微软开发的关系型数据库管理系统,能够支持SQL语言并提供事务处理能力。 描述中提到,在未安装Access 2007的情况下,若仍需进行mdb文件操作,需要安装特定的数据库引擎...

    Orip:基于内存数据库的海量数据实时处理解决方案

    Orip是一个高度集成的实时信息处理平台,它不仅包含了内存数据库引擎,还集成了消息引擎、SOA服务引擎、企业信息服务总线以及高可用管理模块等多种功能。这一综合性的架构使得Orip能够在多种行业领域中得到广泛应用...

    fpdbengine:羽毛笔数据库引擎

    **fpdbengine: 羽毛笔数据库引擎详解** 在当今的Web开发中,JavaScript已经不再仅仅局限于前端交互,而是逐渐扩展到了服务器端和数据库领域。"fpdbengine",即“羽毛笔数据库引擎”,是一个基于JavaScript的轻量级...

    解密Oracle数据库引擎原理

    Oracle数据库引擎的主要功能包括数据存储管理、数据访问控制、数据操作处理、性能优化、数据完整性和一致性以及备份和恢复。 1. 数据存储管理:Oracle数据库引擎采用高效的数据结构和算法,如B树和位图索引,以优化...

    解密PGSQL数据库引擎

    L 数据库引擎的独特特点2.3 PGSQL 数据库引擎的关键特性PGSQL 数据库引擎拥有许多独特的特点,使其在众多数据库引擎中脱颖而出: 1. 支持复杂数据类型:不同于传统的关系型数据库仅支持基本的数据类型,PGSQL 引擎...

    MySQL基础主要记录本人学习MySQL的一些经验总结,内容包括基本的DDL,DCL,DML语句,还有数据库引擎跟优.zip

    4. 数据库引擎:MySQL支持多种数据库引擎,每种引擎都有其特点和适用场景。 - InnoDB:默认引擎,支持事务处理和行级锁定,适合需要事务安全和并发性能的应用。 - MyISAM:非事务处理引擎,速度快,但不支持事务,...

    数据库-Mysql剑谱之数据库引擎.docx

    MySQL数据库引擎是数据库管理系统的核心组件,它决定了数据的存储方式、事务处理机制、查询效率以及诸多其他特性。本文将深入探讨数据库引擎的概念、常见的引擎类型,特别是InnoDB和MyISAM的区别,以便于理解如何...

    数据库引擎开发培训教程.pptx

    总的来说,这个培训教程深入讲解了数据库引擎开发中的核心概念和技术,为理解数据库并发控制、事务管理以及数据恢复机制提供了基础。学习这些内容对于数据库开发者和管理员来说至关重要,因为它们直接影响到数据库...

    第6章MySQL存储引擎与数据库.docx

    在MySQL中,存储引擎主要负责数据的物理存储方式、事务处理、索引管理以及并发控制。 1. MyISAM:这是MySQL早期的默认存储引擎,以其快速的插入和查询速度而著名,但它不支持事务处理。这意味着在MyISAM中,一旦...

    数据库工程师知识点

    - ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),是保证数据库事务正确性的基础。 2. SQL语言: - DDL(Data Definition Language):用于创建和修改...

    DatabaseEngine:基本数据库引擎

    3. 并发控制:在多用户环境下,数据库引擎通过锁、事务、多版本并发控制(MVCC)等机制保证数据的一致性。 4. 安全性:实现用户权限管理,控制对数据的访问权限,防止未授权的访问。 5. 恢复机制:在系统故障或...

    数据库引擎技术架构.pdf

    本篇报告主要探讨了数据库引擎的多个关键组件和设计原则,包括整体架构、前端架构、连接与协议、服务器架构、安全防范以及事务管理与并发控制等方面。 首先,整体架构涉及数据库引擎的主要组成部分。SQL执行过程是...

    SYBASE数据库的使用及日常问题的解决方法

    单进程多线程数据库引擎在原理上和多进程数据库引擎类似,不同的是多线程数据库引擎自己负责调度各应用程序占用 CPU 的时间,而不依赖于操作系统。 SYBASE 数据库的主要内容包括: * 数据库。服务器自身所使用的...

Global site tag (gtag.js) - Google Analytics