指定當(dāng)本地事務(wù)活動時,如果執(zhí)行遠(yuǎn)程存儲過程,將啟動由 Microsoft 分布式事務(wù)管理器 (MS DTC) 管理的 Transact-SQL 分布式事務(wù)。
SET REMOTE_PROC_TRANSACTIONS { ON | OFF }
ON | OFF
當(dāng)設(shè)置為 ON 時,從本地事務(wù)執(zhí)行遠(yuǎn)程存儲過程時將啟動 Transact-SQL 分布式事務(wù)。當(dāng)設(shè)置為 OFF 時,從本地事務(wù)調(diào)用遠(yuǎn)程存儲過程將不啟動 Transact-SQL 分布式事務(wù)。
當(dāng) REMOTE_PROC_TRANSACTIONS 設(shè)置為 ON 時,調(diào)用遠(yuǎn)程存儲過程將啟動分布式事務(wù),并用 MS DTC 登記該事務(wù)。調(diào)用遠(yuǎn)程存儲過程的服務(wù)器是事務(wù)創(chuàng)建者,負(fù)責(zé)控制事務(wù)的完成。當(dāng)連接發(fā)出后續(xù) COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 語句時,主控服務(wù)器請求 MS DTC 在所涉及的服務(wù)器間管理分布式事務(wù)的完成。
啟動 Transact-SQL 分布式事務(wù)后,可以對其它遠(yuǎn)程服務(wù)器調(diào)用遠(yuǎn)程存儲過程。遠(yuǎn)程服務(wù)器全部登記在 Transact-SQL 分布式事務(wù)中,而 MS DTC 確保在每臺服務(wù)器上完成該事務(wù)。
REMOTE_PROC_TRANSACTIONS 是可用于替代服務(wù)器級 sp_configure remote proc trans 選項的連接級設(shè)置。
當(dāng) REMOTE_PROC_TRANSACTIONS 設(shè)置為 OFF 時,遠(yuǎn)程存儲過程調(diào)用不能成為本地事務(wù)的一部分。遠(yuǎn)程存儲過程所做的修改將在存儲過程完成時提交或回滾。由調(diào)用遠(yuǎn)程存儲過程的連接發(fā)出的后續(xù) COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 語句對該過程所做的處理無效。
REMOTE_PROC_TRANSACTIONS 選項是一個兼容性選項,只影響對使用 sp_addserver 定義的遠(yuǎn)程服務(wù)器所進(jìn)行的遠(yuǎn)程存儲過程調(diào)用。有關(guān)更多信息,請參見遠(yuǎn)程存儲過程構(gòu)架。該選項不適用于在使用 sp_addlinkedserver 定義的鏈接服務(wù)器上執(zhí)行存儲過程的分布式查詢。有關(guān)更多信息,請參見分布式查詢構(gòu)架。
SET REMOTE_PROC_TRANSACTIONS 的設(shè)置是在執(zhí)行或運行時設(shè)置,而不是在分析時設(shè)置。
SET REMOTE_PROC_TRANSACTIONS 權(quán)限默認(rèn)授予所有用戶。
相關(guān)文章