通常の接続とコンテキスト接続
リモート サーバーに接続している場合は、常に、コンテキスト接続ではなく通常の接続を使用します。ストアド プロシージャや関数を実行している同一サーバーに接続する必要がある場合は、ほとんどの場合、コンテキスト接続を使用します。コンテキスト接続には、同一のトランザクション領域で実行され、再認証が不要であるなどの利点があります。
また、コンテキスト接続を使用すると、通常、パフォーマンスが向上し、リソースの使用が抑えられます。コンテキスト接続はインプロセスのみの接続なので、ネットワーク プロトコルやトランスポート層を迂回して Transact-SQL ステートメントを送信したり結果を受信することで、"直接" サーバーにアクセスできます。認証プロセスも同様に迂回されます。次の図に、SqlClient マネージ プロバイダの主要なコンポーネントと、通常の接続を使用する場合とコンテキスト接続を使用する場合の、さまざまなコンポーネント相互の通信方法を示します。
コンテキスト接続で使用するコード パスは、通常の接続よりも短く、関連するコンポーネントの数も少ないので、サーバーへの要求とサーバーからの結果の取得が通常の接続よりも速くなることが期待できます。サーバーでのクエリの実行時間は、どちらの接続でも同じです。
同じサーバーに対して通常の接続を別に開く必要が生じる場合もあります。たとえば、コンテキスト接続の使用には、「通常の接続とコンテキスト接続に関する制限事項」で説明しているような制限事項があります。