SET REMOTE_PROC_TRANSACTIONS (Transact-SQL)

适用于:SQL Server

指定当本地事务处于活动状态时,如果执行远程存储过程,将启动由 Transact-SQL 分布式事务处理协调器 (MS DTC) 管理的 Transact-SQL 分布式事务。

重要

在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 提供此选项的目的在于为使用远程存储过程的应用程序提供向后兼容性。 不发出远程存储过程调用,而是使用引用链接服务器的分布式查询。 这些服务器是使用 sp_addlinkedserver 定义的。

Transact-SQL 语法约定

语法

  
SET REMOTE_PROC_TRANSACTIONS { ON | OFF }   

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

ON | OFF
设置为 ON 时,从本地事务执行远程存储过程时将启动 Transact-SQL 分布式事务。 设置为 OFF 时,从本地事务调用远程存储过程将不启动 Transact-SQL 分布式事务。

注解

当 REMOTE_PROC_TRANSACTIONS 设置为 ON 时,调用远程存储过程将启动分布式事务,并用 MS DTC 登记该事务。 调用远程存储过程的 SQL Server 实例是事务创建者,负责控制事务的完成。 当为连接发出后续 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 语句时,主控实例请求 MS DTC 在所涉及的计算机间管理分布式事务的完成。

在启动 Transact-SQL 分布式事务后,可以对已定义为远程服务器的其他 SQL Server 实例调用远程存储过程。 远程服务器全部登记在 Transact-SQL 分布式事务中,而 MS DTC 确保在每台远程服务器上完成该事务。

REMOTE_PROC_TRANSACTIONS 是可用于覆盖实例级 sp_configure remote proc trans 选项的连接级设置。

当 REMOTE_PROC_TRANSACTIONS 为 OFF 时,远程存储过程调用不能成为本地事务的一部分。 远程存储过程所做的修改将在存储过程完成时提交或回滚。 由调用远程存储过程的连接发出的后续 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 语句对该过程所做的处理无效。

REMOTE_PROC_TRANSACTIONS 选项是一个兼容性选项,只影响对使用 sp_addserver 定义为远程服务器的 SQL Server 实例所进行的远程存储过程调用。 该选项不适用于在使用 sp_addlinkedserver 定义为链接服务器的实例上执行存储过程的分布式查询。

SET REMOTE_PROC_TRANSACTIONS 的设置是在执行或运行时设置,而不是在分析时设置。

权限

要求 公共 角色具有成员身份。

另请参阅

BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)
SET 语句 (Transact-SQL)