SQL SERVER存储过程中使用事务
Create PROCEDURE UpdateWanjun
@UserName nvarchar(500),
@UserPassword nvarchar(500),
@ReturnVal int output
AS
--Set XAcT_ABORT ON
Begin Transaction T
Update admins set UserPassword = @UserPassword where UserName = @UserName
Update admins set UserPassword = @UserPassword,a='aaadfasdfasdfas' where id=4 --出错语句 ,a为int型,大小为默认值4
--set @ReturnVal=@@Rowcount(这个变量,只能在紧挨着它的上面SQL下起作用,这样才能返回值,只有放在Update下面才管用)
IF @@Error <> 0
Begin
Print '111'
RollBack Transaction T
End
Else
print '222'
COMMIT Transaction T
GO
####################################################################################
如果在一个存储过程中执行调用另一个服务器上的存储过程时,添加事务时需要使用
BEGIN DISTRIBUTED TRANSACTION来开始事务(分布式事务)
BEGIN DISTRIBUTED TRAN [ SACTION ]
[ transaction_name | @tran_name_variable ]
参数
transaction_name
是用户定义的事务名,用于跟踪 MS DTC 实用工具中的分布式事务。transaction_name 必须符合标识符规则,但是仅使用头 32 个字符。
@tran_name_variable
是用户定义的一个变量名,它含有一个事务名,该事务名用于跟踪 MS DTC 实用工具中的分布式事务。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量。
注释
执行 BEGIN DISTRIBUTED TRANSACTION 语句的服务器是事务创建人,并且控制事务的完成。当连接发出后续 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 语句时,主控服务器请求 MS DTC 在所涉及的服务器间管理分布式事务的完成。
有两个方法可将远程 SQL 服务器登记在一个分布式事务中:
分布式事务中已登记的连接执行一个远程存储过程调用,该调用引用一个远程服务器。
分布式事务中已登记的连接执行一个分布式查询,该查询引用一个远程服务器。
例如,如果在 ServerA 上发出 BEGIN DISTRIBUTED TRANSACTION,该连接调用 ServerB 上的存储过程和 ServerC 上的另一个存储过程,并且 ServerC 上的存储过程对 ServerD 执行一个分布式查询,那么四个 SQL 服务器都进入分布式事务中了。ServerA 是该事务的创建者和控制服务器。
分布式事务 Transact-SQL 涉及的连接并不获取可以传给另一个连接的事务对象,从而也不能用该方法显式登记在分布式事务中。远程服务器登记到事务中的唯一方法是成为远程存储过程调用或分布式查询的目标。
默认情况下,任何有效用户都拥有 BEGIN DISTRIBUTED TRANSACTION 权限。
分享到:
相关推荐
主要介绍了SQLServer存储过程中事务的使用方法,简短的代码带大家更好的学习使用SQLServer存储过程中事务,感兴趣的小伙伴们可以参考一下
Sqlserver 存储过程中使用事务
1. 存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2. 经常会遇到复杂的业务逻辑和对数据库的...
第1章 简介 第2章 SQL Server环境 第3章 存储过程的设计概念 第4章 T-SQL的基本编程结构 第5章 函数 第6章 复合T-SQL结构:批处理、脚本和事务 第7章 调试和错误处理 ...附录 SQL Server 2000中的T-SQL与XML数据类型
SQL存储过程与事务
SQLServer 存储过程 游标的使用方法 事务的使用方法
对游标 函数 T-SQL语言 事务以及存储过程,都有详尽的介绍
10.1.3 使用sp_executesql存储过程 10.2 使用时间戳的乐观锁 10.2.1 时间戳 10.2.2 TSEQUAL函数 10.2.3 时间戳转换 10.3 全文搜索和索引 10.4 嵌套的存储过程 10.4.1 使用临时表来传递一个记录集给一个嵌套的存储...
第1章 简介 第2章 SQL Server环境 第3章 存储过程的设计概念 第4章 T-SQL的基本编程结构 第5章 函数 第6章 复合T-SQL结构:批处理、脚本和事务 第7章 调试和错误处理 ...附录 SQL Server 2000中的T-SQL与XML数据类型
您将跟随一位广受欢迎的作家同时也是SQL Server资深专家一起深入探索SQL Server存储引擎的技术内幕。 本书适合于专业数据库开发者、BI开发者、DBA和以SQL Server作为后台数据库的一般应用程序开发者。本书不仅适合...
简单的存储过程 如何在ASP.NET中调用这个存储过程 带参数的存储过程 如何在ASP.NET中调用这个带参数的存储过程 如何根据传入的参数判断执行哪条SQL语句 C#中使用带返回值的存储过程 SqlServer存储过程的事务处理
主要介绍了SQL Server存储过程中编写事务处理的方法,结合实例形式总结分析了三种存储过程中编写事务处理的方法,具有一定参考借鉴价值,需要的朋友可以参考下
先来看一个概念: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行... --使用存储过程执行事务需要开启XACT_ABORT参数(默认为OFF) delete from table1 where name='' --删除数据sql1 begin tra
SQL Server的事务、游标、存储过程及触发器的创建和实例
SQL 2005 中触发器、事务,存储过程、视图_T-SQL语句的详细讲解课程学习PPT(含有实例和作业题)
10.1.3 使用sp_executesql存储过程 10.2 使用时间戳的乐观锁 10.2.1 时间戳 10.2.2 TSEQUAL函数 10.2.3 时间戳转换 10.3 全文搜索和索引 10.4 嵌套的存储过程 10.4.1 使用临时表来传递一个记录集给一个嵌套的存储...
│ SQLServer2005安装及使用.txt │ ├─02 常用函数 │ function.sql │ ├─03 建表、建库 │ create.sql │ ├─04 查询语句 │ netnote_sql.sql │ T-SQL(1).sql │ 收藏SQL语句.sql │ 精妙SQL语句收集_sql....
删除一条留言信息会级联删除回复信息,这时我们需要用到事务,如下SQL 代码如下:ALTER PROCEDURE [dbo].[proc_tb_leaveword_delete] ( @leavewordID INT, @record TINYINT OUTPUT ) AS BEGIN BEGIN TRY BEGIN...