リンクサーバーがあり、次のステートメントを実行する必要があります。
INSERT INTO...EXEC linkedserver.sp @parameter
どちらのサーバーもSQL Server 2008R2 SP1。実行すると、次のエラーが発生します。
メッセージ7391、レベル16、状態2、行6リンクサーバー "MY.LINKED.SERVER"のOLE DBプロバイダー "SQLNCLI10"が分散トランザクションを開始できなかったため、操作を実行できませんでした。
エラーを検索した後、私はその多くが実行を推奨しているのを見ました:
EXEC master.dbo.sp_serveroption
@server = N'[mylinkedserver]',
@optname = N'remote proc transaction promotion',
@optvalue = N'false'
このアクションに注意すべきセキュリティ上の影響はありますか?
その他のオプションは、メインサーバー上のリンクサーバーオブジェクトの詳細プロパティを使用することです。
あなたがするときINSERT INTO...EXEC
ローカルでは、SQLサーバーはそれを尊重しますが、リンクサーバーを使用する場合、SQLサーバーはローカルトランザクションを開始し、分散トランザクションに昇格/エスカレートする必要があります。
から-> SQL Server 2008で自律型トランザクションを作成する方法
'リモートプロシージャトランザクションプロモーション'はSQL Server 2008の新しいオプションで、リモートストアドプロシージャコールを参加させるかどうかを制御できます。分散トランザクション。 このオプションがオフ(FALSE)の場合、ローカルトランザクションは分散トランザクションに昇格されません。これにより、外部トランザクションと内部トランザクションを分離できます「自律型トランザクション」方式で。
私の知る限りでは、セキュリティへの影響はありません。
また、詳細については sp_serveroption を参照してください。