web-dev-qa-db-ja.com

SQL Server:TCPまたは名前付きパイプを使用するか、デフォルトを使用する必要がありますか?

同じLAN内の別のサーバーにある.NET 4クライアントアプリケーションからSQL Server 2008 R2に接続する場合、3つの異なるネットワークプロトコルを設定できます。

  1. TCP
  2. 名前付きパイプ
  3. 接続文字列には何も設定せず、デフォルトを使用します

ベストプラクティスとは何ですか?何を選ぶ?

追加情報:TCPと名前付きパイプの両方がサーバーとクライアントの両方で有効になっています。アプリケーションはデータベースミラーリングを使用しています。クライアントとサーバーは高速LANを介して通信します。

接続とタイムアウトの問題がまれに発生しているため、この問題を調査しています。 (しかし、それにもかかわらず、私はベストプラクティスを知りたいです)。

この主題に関する記事がMSDNにあります ですが、非常に一般的で曖昧です。役立つものは何も助言または推奨しません。

18
usr

私は名前付きパイプよりもTCP/IPを好みますが、ほとんどの状況では目立った違いはありません。これを行うには、接続文字列にハードコーディングするのではなく、SQL Server構成マネージャーでインスタンスがサポートするプロトコルを調整します(これにより、変更やトラブルシューティングが容易になります)。

基本的に、名前付きパイプに関連するルーティングとその他のオーバーヘッド(アプリがSQL Serverと同じマシン上にある場合を除き、この場合、余分なオーバーヘッドが少ししかありません)は、低速のネットワーク環境では、特に大規模な場合、非効率的なオプションになります(100MB以下)、またはワークロードが急増する場合。

アプリがSQL Serverと同じボックス上にある場合、共有メモリも覚えておく必要があります-SQL Serverボックス上のアプリケーションが直接通信している場合SQL Serverでは、これが最も効率的なオプションになります。

TCP/IPのパフォーマンス上の利点について詳しく読む

18
Aaron Bertrand

名前付きパイププロトコルは、NetBIOSまたはその他のLANベースのプロトコルを中心に設計されたアプリケーションに役立ちます。

名前付きパイプは、単一のセキュリティドメイン内でリモートプロシージャコール(RPC)に簡単にアクセスできるため、これらのアプリケーションに有利です。

通常TCPネットワーク上でこれらすべてを気にする必要がないため、プロトコルは実際には適切です。

8
JP Chauhan