同じLAN内の別のサーバーにある.NET 4クライアントアプリケーションからSQL Server 2008 R2に接続する場合、3つの異なるネットワークプロトコルを設定できます。
ベストプラクティスとは何ですか?何を選ぶ?
追加情報:TCPと名前付きパイプの両方がサーバーとクライアントの両方で有効になっています。アプリケーションはデータベースミラーリングを使用しています。クライアントとサーバーは高速LANを介して通信します。
接続とタイムアウトの問題がまれに発生しているため、この問題を調査しています。 (しかし、それにもかかわらず、私はベストプラクティスを知りたいです)。
この主題に関する記事がMSDNにあります ですが、非常に一般的で曖昧です。役立つものは何も助言または推奨しません。
私は名前付きパイプよりもTCP/IPを好みますが、ほとんどの状況では目立った違いはありません。これを行うには、接続文字列にハードコーディングするのではなく、SQL Server構成マネージャーでインスタンスがサポートするプロトコルを調整します(これにより、変更やトラブルシューティングが容易になります)。
基本的に、名前付きパイプに関連するルーティングとその他のオーバーヘッド(アプリがSQL Serverと同じマシン上にある場合を除き、この場合、余分なオーバーヘッドが少ししかありません)は、低速のネットワーク環境では、特に大規模な場合、非効率的なオプションになります(100MB以下)、またはワークロードが急増する場合。
アプリがSQL Serverと同じボックス上にある場合、共有メモリも覚えておく必要があります-SQL Serverボックス上のアプリケーションが直接通信している場合SQL Serverでは、これが最も効率的なオプションになります。
名前付きパイププロトコルは、NetBIOSまたはその他のLANベースのプロトコルを中心に設計されたアプリケーションに役立ちます。
名前付きパイプは、単一のセキュリティドメイン内でリモートプロシージャコール(RPC)に簡単にアクセスできるため、これらのアプリケーションに有利です。
通常TCPネットワーク上でこれらすべてを気にする必要がないため、プロトコルは実際には適切です。