SET REMOTE_PROC_TRANSACTIONS (Transact-SQL)

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

重要な注意事項重要

このオプションは、リモート ストアド プロシージャを使用する、旧バージョンのアプリケーションとの互換性のために用意されています。リモート ストアド プロシージャを呼び出す代わりに、リンク サーバーを参照した分散クエリを使用してください。これらは、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 ロールのメンバシップが必要です。