欢迎来到天天文库
浏览记录
ID:34725945
大小:64.17 KB
页数:9页
时间:2019-03-10
《sqlserver事务处理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、SQLSERVER事务处理 http://www.cnblogs.com/wenanry/archive/2006/07/10/447157.aspx事务定义:事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除。事务三种运行模式:自动提交事务每条单独的语句都是一个事务。显式事务每个事务均以 BEGINTRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。隐性事务在前一个事务完成时新事务隐式启动,但
2、每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。事务操作的语法:BEGINTRANSACTIONBEGINDISTRIBUTEDTRANSACTIONCOMMITTRANSACTIONCOMMITWORKROLLBACKWORKSAVETRANSACTIONBEGINTRANSACTIONBEGINTRANSACTION标记一个显式本地事务的起始点。BEGINTRANSACTION将 @@TRANCOUNT 加 1。BEGINTRANSACTION 代表一点,由连接引用的数据在该点是逻辑和物理上都一致的。如果遇上错误,在 BEGI
3、NTRANSACTION 之后的所有数据改动都能进行回滚,以将数据返回到已知的一致状态 。每个事务继续执行直到它无误地完成并且用 COMMITTRANSACTION 对数据库作永久的改动,或者遇上错误并且用 ROLLBACKTRANSACTION 语句擦除所有改动语法BEGINTRAN[SACTION][transaction_name
4、@tran_name_variable[WITHMARK['description']]]例子:BEGINTRANT1UPDATEtable1...--nesttransactionM2BEGINTRANM2WI
5、THMARKUPDATEtable2...SELECT*fromtable1COMMITTRANM2UPDATEtable3...COMMITTRANT1BEGINDISTRIBUTEDTRANSACTION指定一个由 Microsoft 分布式事务处理协调器 (MSDTC) 管理的 Transact-SQL 分布式事务的起始。语法BEGINDISTRIBUTEDTRAN[SACTION][transaction_name
6、@tran_name_variable]参数transaction_name是用户定义的事务名,用于跟踪 MSDTC 实用工
7、具中的分布式事务。 transaction_name 必须符合标识符规则,但是仅使用头 32 个字符@tran_name_variable是用户定义的一个变量名,它含有一个事务名,该事务名用于跟踪 MSDTC 实用工具中的分布式事务。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量。注释执行BEGINDISTRIBUTEDTRANSACTION 语句的服务器是事务创建人,并且控制事务的完成当连接发出后续 COMMITTRANSACTION 或 ROLLBACKTRANSACTION 语句时,主控服务器请求 M
8、SDTC 在所涉及的服务器间管理分布式事务的完成。有两个方法可将远程 SQL 服务器登记在一个分布式事务中:分布式事务中已登记的连接执行一个远程存储过程调用,该调用引用一个远程服务器。 分布式事务中已登记的连接执行一个分布式查询,该查询引用一个远程服务器。示例本例在本地和远程数据库上更新作者的姓。本地和远程数据库将同时提交或同时回滚本事务。说明 当前的SQLServer 上必须安装 MSDTC.USEpubsGOBEGINDISTRIBUTEDTRANSACTIONUPDATEauthorsSETau_lname='McDonald'WHEREa
9、u_id='409-56-7008'EXECUTE link_Server_T.pubs.dbo.changeauth_lname'409-56-7008','McDonald'COMMITTRANGONote:如果需要连接远程DB,如果是linkServer 方式连接的话,一定要修该linkServer的 RPC 选项置为 True。SETXACT_ABORT指定当 Transact-SQL 语句产生运行时错误时,Microsoft?SQLServer? 是否自动回滚当前事务。( 可以比较简单的理解,如果中间有任何一句SQL 出错,所有SQL全
10、部回滚.特别适用于 Procedure 中间调用Procedure ,如果第一个ProcedureOk,被调用的Procedure 中间
此文档下载收益归作者所有