適用対象:SQL Server
ローカル トランザクションがアクティブ状態のときにリモート ストアド プロシージャを実行した場合、Microsoft 分散トランザクション コーディネーター (MS DTC) によって管理される Transact-SQL 分散トランザクションを開始するように指定します。
重要
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 このオプションは、リモート ストアド プロシージャを使用する、旧バージョンのアプリケーションとの互換性のために用意されています。 リモート ストアド プロシージャを呼び出す代わりに、リンク サーバーを参照した分散クエリを使用してください。 これらは、sp_addlinkedserver を使って定義されます。
構文
SET REMOTE_PROC_TRANSACTIONS { ON | OFF }
引数
オン |外して
ON の場合、ローカル トランザクションからリモート ストアド プロシージャが実行されると、Transact-SQL 分散トランザクションが開始されます。 OFF の場合、ローカル トランザクションからリモート ストアド プロシージャを呼び出しても、Transact-SQL 分散トランザクションは開始しません。
解説
REMOTE_PROC_TRANSACTIONSオンのとき、リモートストアドプロシージャを呼び出して分散トランザクションを開始し、MS DTCでトランザクションを登録します。 リモート ストアド プロシージャを呼び出す SQL Server のインスタンスは、トランザクションを実行したインスタンスであり、このインスタンスによってトランザクションの完了が制御されます。 この接続に対して引き続き COMMIT TRANSACTION または ROLLBACK TRANSACTION ステートメントを実行すると、制御側のインスタンスは MS DTC 対して、コンピューター間の分散トランザクションの完了を管理することを要求します。
T-SQL 分散トランザクションが開始された後は、リモート サーバーとして定義されている SQL Server の他のインスタンスに対し、リモート ストアド プロシージャを呼び出すことができます。 リモート サーバーはすべて Transact-SQL 分散トランザクションに参加することになります。MS DTC では、各リモート サーバーでトランザクションが完了したかどうかが確認されます。
REMOTE_PROC_TRANSACTIONS は、インスタンスレベルのリモート プロセッショントランス オプションを上書きするために使用できる接続レベル設定sp_configureです。
REMOTE_PROC_TRANSACTIONSがOFFの場合、リモートストアドプロシージャ呼び出しはローカルトランザクションの一部にはなりません。 リモート ストアド プロシージャによる変更は、ストアド プロシージャの完了時にコミットまたはロールバックされます。 リモート ストアド プロシージャを呼び出した接続によって実行される後続の COMMIT TRANSACTION または ROLLBACK TRANSACTION ステートメントは、ストアド プロシージャによる処理に影響を与えません。
REMOTE_PROC_TRANSACTIONSオプションは互換性オプションであり、sp_addserverを使用しているリモートサーバーとして定義されたSQL Serverインスタンスに対して行われるリモートストアドプロシージャ呼び出しのみに影響します。 このオプションは、インスタンス上でストアド プロシージャを実行する分散クエリには適用されません。このインスタンスは、sp_addlinkedserver でリンク サーバーとして定義されたインスタンスです。
SET REMOTE_PROC_TRANSACTIONSの設定は、解析時ではなく実行時に設定されます。
アクセス許可
ロール public のメンバーシップが必要です。