SQL Server:我们应该使用 TCP 或命名管道还是使用默认值?

usr*_*usr 20 sql-server sql-server-2008-r2 network

当从同一 LAN 中不同服务器上的 .NET 4 客户端应用程序连接到 SQL Server 2008 R2 时,可以设置三种不同的网络协议:

  1. TCP
  2. 命名管道
  3. 不要在连接字符串中设置任何内容并使用默认值

什么是最佳实践?选择什么?

附加信息:在服务器和客户端上都启用了 TCP 和命名管道。应用程序正在使用数据库镜像。客户端和服务器通过快速 LAN 进行通信。

我们正在对此进行调查,因为我们有罕见的虚假连接和超时问题。(但无论如何,我想知道最佳实践)。

MSDN 上有一篇关于这个主题的文章,但它非常笼统和模糊。它不建议或推荐任何有用的东西。

Aar*_*and 19

我更喜欢 TCP/IP 而不是命名管道,尽管在大多数情况下不会有明显的区别。您可以通过在 SQL Server 配置管理器中调整实例支持的协议来实现这一点,而不是在连接字符串中进行硬编码(这样可以更轻松地进行更改或排除故障)。

本质上,命名管道涉及的路由和其他开销(除非您的应用程序与 SQL Server 位于同一台机器上,在这种情况下,只有一点点额外开销)使其成为效率较低的选项,尤其是在较慢的网络环境中大规模(100MB 或更少),或者如果您的工作负载突发。

如果您的应用在同一机器与SQL Server,你也应该保持共享内存记住-如果你有与SQL Server直接通信的SQL Server框中的应用程序,这将是最有效的选择。

您可以更详细地了解 TCP/IP 的性能优势


JP *_*han 8

命名管道协议对于围绕 NetBIOS 或其他基于 LAN 的协议设计的应用程序很有用。

命名管道在单个安全域内提供对远程过程调用 (RPC) 的轻松访问,因此有利于这些应用程序。

通常 TCP 协议在实践中很好,因为您不必关心网络上的所有这些。