大規模なオフィスの電話システムを考えてみましょう:
私のオフィスには内線電話システムがあります。ただし、すべての電話には外部電話番号 (実際の TELCO 回線のグループの 1 つを利用する仮想番号) もあります。別のオフィスの内線番号に直接ダイヤルして電話をかけると、その電話は社内の電話システム (1 ホップ) を経由してルーティングされます。別の方法として、その電話の公衆電話番号にダイヤルすると、コールは建物のシステムから TELCO 交換局にルーティングされ、建物のシステムを経由してオフィスの内線に戻ります (3 ホップ)。
最初の SQL 接続は、接続文字列で指定されたサーバーに接続するときの標準的な SQL 接続と同じように動作します。標準のネイティブ SQL 接続を使用して、新しい接続が作成されます。これは、別のオフィスの電話の完全な公衆電話番号をダイヤルするのと同じように動作します。確かに、ローカル マシンに接続していますが、接続の経路が異なります。
コンテキスト接続には、SQLCLR オブジェクトを実行している既存の接続を使用する新しい SqlConnection インスタンスがあります。既存の/ローカル コンテキストを使用しています。これは、オフィス メイトの内線番号に直接ダイヤルするようなものです。ローカル コンテキストとより効率的です。
私は肯定的ではありませんが、コンテキスト接続を使用すると、SQLCLR オブジェクトへの呼び出しもコンテキストのトランザクションに参加すると思います。私が間違っている場合は、誰かが私を修正してください。
ピーター