SQL Server: Haruskah kita menggunakan TCP atau Named Pipes atau menggunakan default?

17

Saat menyambungkan ke SQL Server 2008 R2 dari aplikasi klien .NET 4 pada server berbeda di LAN yang sama, seseorang dapat menetapkan tiga protokol jaringan yang berbeda:

  1. TCP
  2. Pipa Bernama
  3. Jangan atur apa pun di string koneksi dan gunakan default

Apa praktik terbaik? Apa yang harus dipilih?

Informasi tambahan: TCP dan Named Pipes diaktifkan pada server dan pada klien. Aplikasi ini menggunakan mirroring basis data. Klien dan server berkomunikasi melalui LAN cepat.

Kami sedang menyelidiki ini karena kami memiliki masalah konektivitas dan waktu tunggu yang jarang dan palsu. (Tapi terlepas dari itu saya ingin tahu praktik terbaik).

Ada artikel tentang hal ini di MSDN tetapi sangat umum dan tidak jelas. Itu tidak menyarankan atau merekomendasikan sesuatu yang berguna.

usr
sumber
2
@cook, saya yakin itu. Saya juga menemukan tcp:dikonfigurasi sebagai bagian dari sebagian besar string koneksi di lingkungan perusahaan yang berbeda bertahun-tahun kemudian. Saya berasumsi mereka menemukan masalah yang sama.
usr
1
Saya tidak cukup percaya diri untuk memposting itu sebagai jawaban. Aneh, bahwa masalah mengerikan seperti itu tidak diperbaiki. Harus sangat jarang atau sulit untuk mereproduksi. @ccook
usr
1
Sangat jarang dan sulit untuk mereproduksi bagi kita. Untungnya ketika kami membuat aplikasi yang mem-spams koneksi secara bersamaan setiap menit, aplikasi itu dapat mereproduksi setiap saat. Itu masih sangat tidak terduga. Kami sedang menguji perubahan itu sekarang - menunggu beberapa saat sebelum menyebutnya diperbaiki. Setelah melihat ke dalam ini, saya pasti cenderung menggunakan tcp: secara default kecuali aplikasi dan server berada di mesin yang sama.
ccook
1
@cook aku punya pemikiran baru. Berbagi file Windows terkenal tidak bisa diandalkan. Kesalahan palsu dan kegagalan koneksi terlihat oleh banyak orang. Ini jarang tetapi sulit / tidak mungkin untuk didiagnosis. Saat menggunakan pipa bernama Anda sekarang menarik seluruh teknologi ini ke dalam penyebaran SQL Server Anda. Itu tampaknya tidak bijaksana dengan alasan umum.
usr
1
sepakat. Sejauh ini tcp: tampaknya mengatasi masalah ini. Kami menunggu sedikit untuk menyebutnya dikonfirmasi.
ccook

Jawaban:

18

Saya lebih suka TCP / IP daripada Named Pipes, meskipun dalam kebanyakan situasi tidak akan ada perbedaan yang nyata. Anda dapat melakukan ini dengan menyesuaikan protokol yang didukung oleh instance dalam SQL Server Configuration Manager daripada mengkodekan hal-hal dalam string koneksi Anda (ini membuatnya lebih mudah untuk membuat perubahan atau untuk memecahkan masalah).

Pada dasarnya perutean dan overhead lainnya yang terlibat dengan pipa bernama (kecuali aplikasi Anda berada di mesin yang sama dengan SQL Server, dalam hal ini hanya ada sedikit overhead tambahan) menjadikannya pilihan yang kurang efisien, terutama pada skala, dalam lingkungan jaringan yang lebih lambat (100MB atau kurang), atau jika beban kerja Anda meledak.

Jika aplikasi Anda berada di kotak yang sama dengan SQL Server, Anda juga harus mengingat memori bersama - jika Anda memiliki aplikasi di kotak SQL Server yang langsung berkomunikasi dengan SQL Server, ini akan menjadi pilihan yang paling efisien.

Anda dapat membaca tentang keunggulan kinerja TCP / IP lebih terinci .

Aaron Bertrand
sumber
Jadi pada dasarnya tidak terlalu penting tetapi umumnya lebih baik menggunakan TCP karena tidak ada alasan untuk memilih pipa bernama. Apakah Anda setuju dengan ringkasan itu?
usr
1
@ usr Nah, itu penting ketika Anda mengatur skala, atau jika jaringan Anda payah. Tapi ya, secara umum, tidak ada manfaat nyata untuk memilih pipa bernama dalam hal apa pun, yang saya tahu.
Aaron Bertrand
7

Protokol Bernama Pipa berguna untuk aplikasi yang dirancang di sekitar NetBIOS atau protokol berbasis LAN lainnya.

Named Pipes menyediakan akses mudah ke Remote Procedure Calls (RPC) dalam satu domain keamanan dan karenanya menguntungkan untuk aplikasi ini.

Biasanya protokol TCP bagus dalam praktiknya karena Anda tidak perlu peduli tentang semua ini di jaringan.

JP Chauhan
sumber