SQL Server: Sollten wir TCP oder Named Pipes verwenden oder die Standardeinstellung verwenden?

17

Wenn Sie von einer .NET 4-Clientanwendung auf einem anderen Server im selben LAN eine Verbindung zu SQL Server 2008 R2 herstellen, können Sie drei verschiedene Netzwerkprotokolle festlegen:

  1. TCP
  2. Named Pipes
  3. Legen Sie nichts in der Verbindungszeichenfolge fest und verwenden Sie die Standardeinstellung

Was ist die beste Vorgehensweise? Was zu wählen?

Zusätzliche Informationen: Sowohl TCP als auch Named Pipes sind sowohl auf dem Server als auch auf dem Client aktiviert. Die Anwendung verwendet die Datenbankspiegelung. Client und Server kommunizieren über ein schnelles LAN.

Wir untersuchen dies, weil wir seltene und unechte Konnektivitäts- und Timeout-Probleme haben. (Unabhängig davon würde ich gerne die beste Vorgehensweise kennen).

Es gibt einen Artikel zu diesem Thema über MSDN, der jedoch sehr allgemein und vage ist. Es wird nichts Nützliches empfohlen oder empfohlen.

usr
quelle
2
@ccook Ich glaube es hat. Ich fand es auch tcp:Jahre später als Teil der meisten Verbindungszeichenfolgen in der Umgebung eines anderen Unternehmens konfiguriert. Ich gehe davon aus, dass sie ähnliche Probleme gefunden haben.
usr
1
Ich bin nicht zuversichtlich, das als Antwort zu posten. Es ist jedoch seltsam, dass solch ein ungeheures Problem gelöst ist. Muss sehr selten oder schwer zu reproduzieren sein. @ccook
usr
1
Es ist sehr selten und schwer für uns zu reproduzieren. Glücklicherweise konnte diese App, die jede Minute gleichzeitig Spam-Verbindungen verursacht, sie von Zeit zu Zeit reproduzieren. Es ist immer noch sehr unvorhersehbar. Wir testen diese Änderung jetzt - warten Sie eine Weile, bevor Sie sie korrigieren. Nachdem ich mir das angeschaut habe, bin ich definitiv geneigt, tcp zu verwenden: Standardmäßig, es sei denn, die App und der Server befinden sich auf demselben Computer.
Ccook
1
@ccook Ich hatte einen neuen Gedanken. Windows-Dateifreigaben sind bekanntermaßen unzuverlässig. Falsche Fehler und Verbindungsfehler werden von vielen gesehen. Es ist selten, aber schwer / unmöglich zu diagnostizieren. Wenn Sie Named Pipes verwenden, ziehen Sie jetzt diese gesamte Technologie in Ihre SQL Server-Bereitstellung. Das scheint aus allgemeinen Gründen unklug.
USR
1
einverstanden. Bisher scheint tcp: das Problem anzugehen. Wir warten ein bisschen darauf, es als bestätigt zu bezeichnen.
Ccook

Antworten:

18

Ich bevorzuge TCP / IP gegenüber Named Pipes, obwohl es in den meisten Situationen keinen merklichen Unterschied gibt. Sie können dies tun, indem Sie die von der Instanz in SQL Server Configuration Manager unterstützten Protokolle anpassen, anstatt die Elemente in Ihrer Verbindungszeichenfolge fest zu codieren (dies erleichtert das Vornehmen von Änderungen oder das Behandeln von Problemen).

Im Wesentlichen machen das Routing und andere mit Named Pipes verbundene Overheads (es sei denn, Ihre Apps befinden sich auf demselben Computer wie SQL Server. In diesem Fall entsteht nur ein geringer zusätzlicher Overhead) diese Option in einer langsameren Netzwerkumgebung zu einer weniger effizienten Option, insbesondere in skalierten Umgebungen (100 MB oder weniger), oder wenn Ihre Workloads in Stößen auftreten.

Wenn Ihre Anwendungen sind auf dem gleichen Feld wie SQL Server, sollten Sie auch Shared - Memory im Auge behalten - wenn Sie Anwendungen auf dem Feld SQL Server haben direkt die Kommunikation mit SQL Server, ist dies die effizienteste Option sein wird.

Sie können mehr über die Leistungsvorteile von TCP / IP erfahren .

Aaron Bertrand
quelle
Grundsätzlich spielt es keine Rolle, aber es ist im Allgemeinen vorzuziehen, mit TCP zu arbeiten, da es keine Gründe gibt, Named Pipes zu wählen. Würden Sie dieser Zusammenfassung zustimmen?
USR
1
@usr Nun, es ist wichtig, wann Sie skalieren oder ob Ihr Netzwerk nicht funktioniert. Aber ja, im Allgemeinen gibt es keine wirklichen Vorteile bei der Auswahl von Named Pipes, die ich kenne.
Aaron Bertrand
7

Das Named Pipes-Protokoll ist nützlich für Anwendungen, die auf NetBIOS oder anderen LAN-basierten Protokollen basieren.

Named Pipes bietet einfachen Zugriff auf Remote Procedure Calls (RPC) innerhalb einer einzelnen Sicherheitsdomäne und ist daher für diese Anwendungen von Vorteil.

Normalerweise ist das TCP-Protokoll in der Praxis gut geeignet, da Sie sich nicht um all dies im Netzwerk kümmern müssen.

JP Chauhan
quelle