分享方式:


SET REMOTE_PROC_TRANSACTIONS (Transact-SQL)

適用於:SQL Server

指定當本機交易在使用中,執行遠端預存程序會啟動一項 Microsoft 分散式交易協調器 (MS DTC) 所管理的 Transact-SQL 分散式交易。

重要

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 這個選項專用來相容於使用遠端預存程序的舊版應用程式。 請改用參考連結伺服器的分散式查詢,不再發出遠端預存程序呼叫。 這些作業是使用 sp_addlinkedserver 來定義。

Transact-SQL 語法慣例

語法

  
SET REMOTE_PROC_TRANSACTIONS { ON | OFF }   

引數

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 選項是一個相容性選項,只會影響對 SQL Server 執行個體 (藉由 sp_addserver 定義為遠端伺服器) 所發出的遠端預存程序呼叫。 這個選項不適合在執行個體 (藉由 sp_addlinkedserver 定義為連結伺服器) 上執行預存程序的分散式查詢。

SET REMOTE_PROC_TRANSACTIONS 的設定是在執行階段進行設定,而不是在剖析階段進行設定。

權限

需要 public 角色的成員資格。

另請參閱

BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)
SET 陳述式 (Transact-SQL)