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