SET REMOTE_PROC_TRANSACTIONS (Transact-SQL)

Gilt für:SQL Server

Gibt an, dass durch das Ausführen einer remote gespeicherten Prozedur, sofern eine lokale Transaktion aktiv ist, eine verteilte Transact-SQL-Transaktion gestartet wird, die von Microsoft Distributed Transaction Manager (MS DTC) verwaltet wird.

Wichtig

Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Diese Option wird aus Gründen der Abwärtskompatibilität mit Anwendungen bereitgestellt, die remote gespeicherte Prozeduren verwenden. Verwenden Sie statt dem Aufruf von remote gespeicherten Prozeduren verteilte Abfragen, die auf Verbindungsserver verweisen. Diese werden mithilfe von sp_addlinkedserver definiert.

Transact-SQL-Syntaxkonventionen

Syntax

  
SET REMOTE_PROC_TRANSACTIONS { ON | OFF }   

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

ON | OFF
Bei ON wird eine verteilte Transact-SQL-Transaktion gestartet, wenn eine remote gespeicherte Prozedur von einer lokalen Transaktion aus ausgeführt wird. Bei OFF wird keine verteilte Transact-SQL-Transaktion gestartet, wenn eine remote gespeicherte Prozedur von einer lokalen Transaktion aus aufgerufen wird.

Hinweise

Wenn REMOTE_PROC_TRANSACTIONS auf ON festgelegt ist und eine remote gespeicherte Prozedur aufgerufen wird, wird eine verteilte Transaktion gestartet und bei MS DTC eingetragen. Die SQL Server-Instanz, die die remote gespeicherte Prozedur aufruft, wird als Transaktionsurheber bezeichnet und steuert die Beendigung der Transaktion. Wenn im Anschluss eine COMMIT TRANSACTION- oder ROLLBACK TRANSACTION-Anweisung für die Verbindung ausgegeben wird, fordert die steuernde Instanz MS DTC auf, die Beendigung der verteilten Transaktion auf den beteiligten Computern zu verwalten.

Nachdem eine verteilte Transact-SQL-Transaktion gestartet wurde, können Aufrufe remote gespeicherter Prozeduren für weitere SQL Server-Instanzen erfolgen, die als Remoteserver definiert wurden. Alle Remoteserver werden in der verteilten Transact-SQL-Transaktion eingetragen, und MS DTC stellt sicher, dass die Transaktion für jeden Remoteserver abgeschlossen wird.

REMOTE_PROC_TRANSACTIONS ist eine Einstellung auf Verbindungsebene, mit der die Option sp_configure remote proc trans, die auf Serverebene gilt, überschrieben werden kann.

Wenn REMOTE_PROC_TRANSACTIONS auf OFF festgelegt ist, werden Aufrufe remote gespeicherter Prozeduren nicht als Teil einer lokalen Transaktion ausgeführt. Für die Änderungen, die von der remote gespeicherten Prozedur vorgenommen werden, wird ein Commit oder ein Rollback durchgeführt, wenn die gespeicherte Prozedur abgeschlossen wird. Weitere COMMIT TRANSACTION- oder ROLLBACK TRANSACTION-Anweisungen der Verbindung, die die remote gespeicherte Prozedur aufgerufen hat, wirken sich nicht auf die von der Prozedur durchgeführte Verarbeitung aus.

Die Option REMOTE_PROC_TRANSACTIONS ist eine Kompatibilitätsoption, die sich nur auf Aufrufe remote gespeicherter Prozeduren für SQL Server-Instanzen auswirkt, die mithilfe von sp_addserver als Remoteserver definiert wurden. Die Option gilt nicht für verteilte Abfragen, die eine gespeicherte Prozedur für eine Instanz ausführen, die mit sp_addlinkedserver als Verbindungsserver definiert wurde.

Die Einstellung von SET REMOTE_PROC_TRANSACTIONS wird zur Ausführungszeit und nicht zur Analysezeit festgelegt.

Berechtigungen

Erfordert die Mitgliedschaft in der public -Rolle.

Weitere Informationen

BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)
SET-Anweisungen (Transact-SQL)