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 权限。
分享到:
相关推荐
本篇将详细介绍如何在SQL Server存储过程中使用事务。 首先,事务有四个基本特性,即ACID(原子性、一致性、隔离性和持久性): 1. 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不会留下...
SQL Server 中存储过程比直接运行 SQL 语句慢的原因 在 SQL Server 中,存储过程比直接运行 SQL 语句慢的原因是 Parameter sniffing 问题。Parameter sniffing 是指 SQL Server 在执行存储过程时,使用参数的统计...
### SQL Server 存储过程 With ...通过以上步骤,我们可以成功地解密SQL Server中使用`WITH ENCRYPTION`加密的存储过程。虽然解密过程中存在一定的风险,但在必要时能够极大地帮助开发者进行代码维护和问题排查。
存储过程是SQL Server中预编译的一系列SQL语句,它们存储在数据库中,可通过名称调用,以执行特定任务。几乎任何Transact-SQL代码都可以用来创建存储过程,从而实现复杂逻辑的封装和重用。 #### 存储过程设计规则 ...
### SQL Server 存储过程在系统开发中的应用 #### 概述 在现代数据库系统开发过程中,SQL Server 存储过程被广泛应用于提高系统性能、简化应用程序开发以及增强安全性等方面。存储过程是一种预编译的SQL脚本,它...
本文将深入解析SQL Server存储过程的创建、参数传递、事务管理、条件判断以及游标使用的语法细节。 #### 创建存储过程 存储过程的基本语法如下: ```sql CREATE PROCEDURE 存储过程名称 @参数1 数据类型, @参数...
以下是针对"SQLSERVER存储过程例子"的详细解释。 1. **存储过程的概念**: 存储过程是一组为了完成特定功能的SQL语句,这些语句被组合在一起并保存在数据库中,用户可以通过调用存储过程的名字来执行这些语句。...
总之,学习SQL Server存储过程涉及到T-SQL语法、游标操作、事务管理和XML处理等多个方面。通过阅读电子书,参考案例代码,不断实践和优化,你将能够掌握这一强大的数据库工具,提升你的数据库开发和管理技能。
使用SQL Server存储过程生成器可以极大地简化存储过程的创建过程,减少手动编写和调试的工作量,特别是在大型项目中,这样的工具能显著提升开发效率和代码质量。然而,值得注意的是,尽管工具可以自动化许多任务,...
这篇学习笔记将深入探讨SQL Server存储过程的基本概念、创建、执行以及其在数据库开发中的应用。 一、存储过程的基本概念 存储过程是数据库中的一个对象,由一系列的SQL语句、控制流语句(如IF-ELSE,WHILE)和变量...
本章节主要讲述了 SQL Server 中的存储过程和触发器的概念、类型、创建、使用和优点等。 存储过程概述 存储过程是 SQL Server 服务器上的一组预编译的 Transact-SQL 语句,用于完成某项任务。它可以接受参数、返回...
在SQL Server中,还可以使用存储过程进行事务管理,确保一组数据库操作要么全部成功,要么全部回滚,这对于保持数据一致性至关重要。此外,存储过程支持嵌套,即在一个存储过程中调用另一个存储过程,这在处理复杂...
以下是关于SQL Server存储过程和函数的一些常用知识点: 1. **存储过程(Stored Procedures)**: - **定义**:存储过程是一组预编译的SQL语句,可以接受参数,执行特定任务,如数据查询、更新或插入等。 - **...
另一种是在FROM子句中使用存储过程,例如在SELECT语句中。 3. **参数和变量**:存储过程可以接受输入参数,用于传递值到过程内部;输出参数则允许过程返回值给调用者。局部变量可以在过程中声明并使用,以辅助计算...
在Delphi中调用SQL Server存储过程,主要涉及到以下几个关键组件和步骤: 1. **ADOConnection**: 这是连接到数据库的主要组件,负责建立和管理与SQL Server的连接。在本例中,设置其属性`Connection`指向`...
【C#创建SQL Server存储过程】在SQL Server 2005中,开发人员不再局限于使用T-SQL来创建存储过程、函数和触发器。得益于SQL Server 2005对.NET Common Language Runtime (CLR)的支持,我们可以使用C#、VB.NET等.NET...
本篇文章将深入探讨如何使用Microsoft SQL Server中的存储过程,特别适合初学者学习。 一、存储过程的基本概念 存储过程是由一个或多个SQL语句组成的程序,它存储在数据库中,可以被多次调用,减少了网络通信的开销...
存储过程是SQL Server 2005中的一个核心特性,是预编译的SQL语句集合,可以理解为数据库中的可执行程序。本视频教程针对存储过程这一主题,对初学者提供了宝贵的教育资源。 存储过程的优势在于: 1. **性能优化**...