SQL Server: devons-nous utiliser TCP ou des canaux nommés ou utiliser la valeur par défaut?

17

Lors de la connexion à un serveur SQL Server 2008 R2 à partir d'une application cliente .NET 4 sur un serveur différent dans le même réseau local, on peut définir trois protocoles réseau différents:

  1. TCP
  2. Named Pipes
  3. Ne définissez rien dans la chaîne de connexion et utilisez la valeur par défaut

Quelle est la meilleure pratique? Que choisir?

Informations supplémentaires: TCP et les canaux nommés sont activés à la fois sur le serveur et sur le client. L'application utilise la mise en miroir de bases de données. Le client et le serveur communiquent sur un LAN rapide.

Nous étudions cela parce que nous avons des problèmes de connectivité et de temporisation rares et parasites. (Mais malgré cela, j'aimerais connaître les meilleures pratiques).

Il y a un article sur ce sujet sur MSDN mais il est très générique et vague. Il ne conseille ni ne recommande rien d'utile.

usr
la source
2
@ccook Je crois que oui. J'ai également trouvé tcp:configuré dans le cadre de la plupart des chaînes de connexion dans l'environnement d'une entreprise différente des années plus tard. Je suppose qu'ils ont trouvé des problèmes similaires.
usr
1
Je ne suis pas assez confiant pour poster cela comme réponse. Il est cependant étrange qu'un problème aussi grave ne soit pas résolu. Doit être très rare ou difficile à reproduire. @ccook
usr
1
C'est très rare et difficile à reproduire pour nous. Heureusement, lorsque nous avons créé cette application qui spams les connexions simultanément chaque minute, elle peut la reproduire de temps en temps. C'est encore très imprévisible. Nous testons ce changement maintenant - en attendant un moment avant de l'appeler corrigé. Après avoir examiné cela, je suis définitivement enclin à utiliser tcp: par défaut, sauf si l'application et le serveur sont sur la même machine.
ccook
1
@ccook J'ai eu une nouvelle pensée. Les partages de fichiers Windows sont notoirement peu fiables. De nombreuses erreurs et défaillances de connexion sont perçues par de nombreux utilisateurs. C'est rare mais difficile / impossible à diagnostiquer. Lorsque vous utilisez des canaux nommés, vous intégrez désormais toute cette technologie dans votre déploiement SQL Server. Cela semble imprudent pour des raisons générales.
usr
1
D'accord. Jusqu'à présent, TCP: semble résoudre le problème. Nous attendons un peu pour l'appeler confirmé cependant.
ccook

Réponses:

18

Je préfère TCP / IP aux canaux nommés, même si dans la plupart des situations il n'y aura pas de différence notable. Vous pouvez le faire en ajustant les protocoles pris en charge par l'instance dans SQL Server Configuration Manager plutôt qu'en codant en dur des éléments dans votre chaîne de connexion (cela facilite la modification ou le dépannage).

Essentiellement, le routage et les autres frais généraux impliqués dans les canaux nommés (sauf si vos applications se trouvent sur la même machine que SQL Server, auquel cas il n'y a que peu de frais supplémentaires) en font l'option moins efficace, en particulier à grande échelle, dans un environnement réseau plus lent. (100 Mo ou moins), ou si vos charges de travail se présentent en rafales.

Si vos applications sont sur la même boîte que SQL Server, vous devez également garder à l'esprit la mémoire partagée - si vous avez des applications sur la boîte SQL Server communiquant directement avec SQL Server, ce sera l'option la plus efficace.

Vous pouvez en savoir plus sur les avantages de performances de TCP / IP .

Aaron Bertrand
la source
Donc, cela n'a pas beaucoup d'importance, mais il est généralement préférable d'utiliser TCP car il n'y a aucune raison de choisir des canaux nommés. Êtes-vous d'accord avec ce résumé?
usr
1
@usr Eh bien, cela compte lorsque vous évoluez ou si votre réseau est nul. Mais oui, en général, je ne connais aucun avantage réel à choisir des tuyaux nommés.
Aaron Bertrand
7

Le protocole Named Pipes est utile pour l'application conçue autour de NetBIOS ou d'autres protocoles LAN.

Les canaux nommés offrent un accès facile aux appels de procédure distante (RPC) dans un seul domaine de sécurité et sont donc avantageux pour ces applications.

Habituellement, le protocole TCP est bon dans la pratique car vous n'avez pas à vous soucier de tout cela sur le réseau.

JP Chauhan
la source