SET REMOTE_PROC_TRANSACTIONS (Transact-SQL)

Область применения: SQL Server

Указывает, что в момент, когда активна локальная транзакция, выполнение удаленной хранимой процедуры запускает распределенную транзакцию Transact-SQL, управляемую координатором распределенных транзакций Майкрософт (MS DTC).

Внимание

Эта функция будет удалена в будущей версии 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)