Share via


SET REMOTE_PROC_TRANSACTIONS (Transact-SQL)

ローカル トランザクションがアクティブ状態のときにリモート ストアド プロシージャを実行した場合、Microsoft 分散トランザクション コーディネーター (MS DTC) によって管理される Transact-SQL 分散トランザクションを開始するように指定します。

重要な注意事項重要

この機能は、Microsoft 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 オプションは互換性のためのオプションであり、sp_addserver でリモート サーバーとして定義された SQL Server インスタンスに対してリモート ストアド プロシージャを呼び出す場合にのみ、影響を及ぼします。 このオプションは、インスタンス上でストアド プロシージャを実行する分散クエリには適用されません。このインスタンスは、sp_addlinkedserver でリンク サーバーとして定義されたインスタンスです。

SET REMOTE_PROC_TRANSACTIONS は、解析時ではなく実行時に設定されます。

権限

public ロールのメンバーシップが必要です。

関連項目

参照

BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)

SET ステートメント (Transact-SQL)