SQL Server: TCP veya Adlandırılmış Kanallar mı kullanmalıyız yoksa varsayılanı mı kullanmalıyız?


17

Aynı LAN'daki farklı bir sunucudaki bir .NET 4 istemci uygulamasından bir SQL Server 2008 R2'ye bağlanırken, üç farklı ağ protokolü ayarlanabilir:

  1. TCP
  2. İsimli Borular
  3. Bağlantı dizesinde hiçbir şey ayarlama ve varsayılanı kullanma

En iyi uygulama nedir? Ne seçeceksin?

Ek bilgiler: Hem TCP hem de Adlandırılmış Yöneltmeler hem sunucuda hem de istemcide etkinleştirilir. Uygulama veritabanı yansıtma kullanıyor. İstemci ve sunucu hızlı bir LAN üzerinden iletişim kurar.

Bunu araştırıyoruz çünkü nadir ve sahte bağlantı ve zaman aşımı sorunlarımız var. (Ama ne olursa olsun en iyi uygulamayı bilmek istiyorum).

Bu konuda MSDN'de bir makale var ama çok genel ve belirsiz. Yararlı bir şey önermez veya önermez.


2
@ccook İnanıyorum. Ayrıca tcp:yıllar sonra farklı bir şirketin ortamında çoğu bağlantı dizesinin bir parçası olarak yapılandırıldığını buldum . Sanırım benzer problemler buldular.
usr

1
Bunu cevap olarak gönderecek kadar emin değilim. Bununla birlikte, böyle berbat bir sorunun çözülmemiş olması tuhaftır. Çok nadir veya yeniden üretilmesi zor olmalıdır. @ccook
usr

1
Bizim için çok seyrek ve çoğalması zor. Neyse ki, bağlantıların her dakika aynı anda spam gönderdiği bir uygulamayı oluşturduğumuzda, uygulamayı şimdi ve sonra tekrar üretebilir. Hala çok tahmin edilemez. Bu değişikliği şimdi test ediyoruz - düzeltmeden önce biraz bekleyin. Buna rağmen, kesinlikle uygulama ve sunucu aynı makinede olmadığı sürece varsayılan olarak tcp kullanmaya eğilimliyim.
ccook

1
@ccook Yeni bir düşüncem vardı. Windows dosya paylaşımları çok güvenilir değildir. Sahte hatalar ve bağlantı hataları birçokları tarafından görülür. Nadirdir, ancak teşhis edilmesi zor / imkansızdır. Adlandırılmış yöneltmeler kullanırken, şimdi tüm bu teknolojiyi SQL Server dağıtımınıza çekin. Genel gerekçelerle bu yanlış görünüyor.
usr

1
kabul. Şimdiye kadar tcp: sorunu ele alıyor gibi görünüyor. Yine de onaylanmış aramak için biraz bekliyoruz.
ccook

Yanıtlar:


18

Çoğu durumda gözle görülür bir fark olmamasına rağmen, Adlandırılmış Kanallar yerine TCP / IP'yi tercih ederim. Bunu, bağlantı dizenizdeki şeyleri kodlamak yerine SQL Server Configuration Manager'da örnek tarafından desteklenen protokolleri ayarlayarak yapabilirsiniz (bu, değişiklik yapmayı veya sorun gidermeyi kolaylaştırır).

Esasen, adlandırılmış yöneltmelerle ilgili yönlendirme ve diğer ek yükler (uygulamalarınız SQL Server ile aynı makinede değilse, bu durumda sadece biraz fazladan ek yük yoksa), özellikle daha yavaş bir ağ ortamında daha düşük verimli bir seçenek haline getirir. (100 MB veya daha az) veya iş yükleriniz patlarsa.

Uygulamalarınız Eğer vardır SQL Server ile aynı kutuyu, ayrıca akılda paylaşılan hafızayı tutmalı - doğrudan SQL Server ile iletişim SQL Server kutuyu uygulamalar varsa, bu en verimli seçenek olacak.

Sen olabilir daha ayrıntılı olarak TCP / IP'nin performans avantajları hakkında okumak .


Bu yüzden temelde o kadar önemli değil, ancak TCP ile gitmek genellikle tercih edilir, çünkü adlandırılmış kanalları seçmek için hiçbir neden yoktur. Bu özeti kabul eder misiniz?
usr

1
@usr Peki, ölçeklendirdiğinizde veya ağınız berbat olduğunda önemlidir. Ancak evet, genel olarak, bildiğim her durumda adlandırılmış boruları seçmenin gerçek bir faydası yoktur.
Aaron Bertrand

7

Adlandırılmış Borular protokolü, NetBIOS veya diğer LAN tabanlı protokoller etrafında tasarlanmış uygulama için kullanışlıdır.

Named Pipes, tek bir güvenlik etki alanındaki Uzak Yordam Çağrılarına (RPC) kolay erişim sağlar ve bu nedenle bu uygulamalar için avantajlıdır.

Genellikle TCP Protokolü uygulamada iyidir, çünkü ağdaki tüm bunları önemsemeniz gerekmez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.