web-dev-qa-db-ja.com

リンクサーバーの分散トランザクションのプロモーションを無効にするセキュリティ上の影響

リンクサーバーがあり、次のステートメントを実行する必要があります。

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'

このアクションに注意すべきセキュリティ上の影響はありますか?

その他のオプションは、メインサーバー上のリンクサーバーオブジェクトの詳細プロパティを使用することです。

enter image description here

8
Yaroslav

あなたがするときINSERT INTO...EXECローカルでは、SQLサーバーはそれを尊重しますが、リンクサーバーを使用する場合、SQLサーバーはローカルトランザクションを開始し、分散トランザクションに昇格/エスカレートする必要があります。

から-> SQL Server 2008で自律型トランザクションを作成する方法

'リモートプロシージャトランザクションプロモーション'はSQL Server 2008の新しいオプションで、リモートストアドプロシージャコールを参加させるかどうかを制御できます。分散トランザクション。 このオプションがオフ(FALSE)の場合、ローカルトランザクションは分散トランザクションに昇格されません。これにより、外部トランザクションと内部トランザクションを分離できます「自律型トランザクション」方式で。

私の知る限りでは、セキュリティへの影響はありません。

また、詳細については sp_serveroption を参照してください。

10
Kin Shah